У меня есть проект Roo, который работает "отлично" с транзакциями, но каждый .merge () или .persist () занимает все больше и больше времени, так что то, что должно было занять 10 мс, требует 5000 мс к концу транзакции. К счастью, мои изменения индивидуально идемпотентны, поэтому мне не нужна транзакция.
Но когда я выбрасываю обработку транзакций, я сталкиваюсь с классическим «контекст был закрыт», когда я выполняю myObject.merge ()
Я выполняю задание из командной строки в виде пакета, поэтому я обычно делаю вот что:
public static void main(final String[] args) {
context = new ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml");
JpaTransactionManager txMgr = (JpaTransactionManager) context.getBean("transactionManager");
TransactionTemplate txTemplate = new TransactionTemplate(txMgr);
txTemplate.execute(new TransactionCallback() { @SuppressWarnings("finally")
public Object doInTransaction(TransactionStatus txStatus) {
try {
ImportUnitFromDisk importer = new ImportUnitFromDisk();
int status = importer.run(args[0]);
System.out.println("Import data complete status: " + status);
} catch (Exception e) {
e.printStackTrace();
} finally {
return null;
}
}});
System.out.println("All done!");
System.exit(0);
}
Но я действительно хочу сделать что-то вроде этого:
public static void main(final String[] args) {
ImportUnitFromDisk importer = new ImportUnitFromDisk();
int status = importer.run(args[0]);
System.out.println("Import data complete status: " + status);
System.out.println("All done!");
System.exit(0);
}
Что я могу сделать, чтобы разрешить мне выполнять функции persist () и merge () без использования транзакций, учитывая, что сущности создаются с помощью Spring Roo (с использованием OpenJPA и MySQL)?
Приветствия
Nik