トランザクション

概要

このページでは、SimpleORM4Jに実装されているトランザクションメソッドに関してご説明をしていきます。
SimpleORM4Jではトランザクションはデータベース接続毎に管理する設計としていますので、データベース接続毎に生成されるEntityManagerのメソッドとして実装がされています。

beginTransaction トランザクションの開始
commit コミット
rollback ロールバック

実装例

SimepleORM4Jでのトランザクション実装例を以下に記載をします。

■ 実装例
try {
	EntityManager em = EntityManagerFactory.createEntityManager();
	Criteria criteria = em.getCriteria();
	criteria.select(Charge.class)
		  .from(Charge.class)
		  .where(Expression.equal(Charge.class.getDeclaredField("id"), 3));
	Query query = em.createQuery(criteria);
	Charge charge = (Charge) query.getSingleResult();

	em.beginTransaction(); // トランザクション開始
	try {
		charge.setName("担当者C更新2");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
		charge.setRegistDate(sdf.parse("2020-04-06 10:10:10"));
		charge.setUpdateDate(sdf.parse("2020-04-06 10:10:10"));
		int updCnt = em.merge(charge);
		System.out.println("Update count : " + updCnt);
	} catch (So4jException e) {
		em.rollback(); // ロールバック
		throw new Exception(e.getMessage(), e);
	}
	em.commit(); // コミット

} catch (Exception e) {
	e.printStackTrace();
}

ご意見・ご感想・バグ報告

×

SimpleORM4Jへのご意見やご感想がございましたら、メッセージをお願い致します。
また、SimpleORM4Jを使用して頂きまして、バグがございましたらご連絡を頂けると助かります。
皆様からのご意見・ご感想をもとに、SimpleORM4Jを改善・拡張をしていきたいと考えております。
皆様からのメッセージは当方で確認をしておりますが、仕事をしながらの開発となる為、すぐにご返信・対応をすることが 出来ない場合がございます。何卒ご容赦ください。

※印は必須です
タイトル
メールアドレス
内容