私はトランザクションで「うまく」動作するRooプロジェクトを持っていますが、各.merge()または.persist()は10ミリ秒かかるはずですトランザクションの最後に向かって5000ms。幸運なことに、私の変更は個別に冪等であるため、実際にはトランザクションは必要ありません。トランザクションのないバッチジョブとしてのSpring Rooプロジェクト
しかし、私は、私は古典的に実行するトランザクション処理を捨てる私はmyObject.mergeを(やるとき「は、文脈が閉じられた」)
私が実行しているジョブはバッチとして、コマンドラインからのもので、なし私は私が(持続)と合併することを可能にするために何ができる
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);
}
():
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);
}
しかし、私が本当にやりたいことは、このようなものです:ので、ここで私は通常、何をすべきかですtrを使ってエンティティがSpring Roo(OpenJPAとMySQLを使用)で生成されていることを前提にしていますか?
乾杯
ニック
トランザクション内で行うことは何ですか:readonly? – Ralph