ニコニコカレンダー (1.0.3) | 2013-07-09 11:46 |
ニコニコフレームワーク (0.0.2) | 2009-08-08 17:10 |
ニコニコフレームワークは永続化サポートとして、JDOでのデータベースアクセスを簡単に行うための機能を提供します。
永続化サポートとしてJDPを使用するにはframework.propertiesで以下の設定を行います。
persistenceManager=jp.sf.nikonikofw.persistence.jdo.JdoPersistenceManager
普通にJDOのエンティティとして作成します。
JdoUtilを使うとJDOのPersistenceManagerを直接使うよりも簡単にJDOの操作を行うことができます。特にJDOのQueryオブジェクトを使ったJDOQLでの検索は非常にシンプルに記述することができるようになります。
以下に簡単な検索の例を示します。
// 1件取得 Employee emp = JdoUtil.from(Employee.class) .filter("empId == ?") .getSingleResult(empId); // IDを指定して取得 Employee emp = JdoUtil.getObjectById(id); // 複数件取得 List<Employee> empList = JdoUtil.from(Employee.class) .ordering("empId asc") .getResultList();
エンティティの保存や削除は以下のように行います。
// 保存 JdoUtil.insert(entity); // 削除 JdoUtil.delete(entity); // 複数件の削除 List<Employee > empList = ... JdoUtil.deleteAll(empList);
ニコニコフレームワークではControllerServletによって自動的に1リクエスト=1トランザクションとしてトランザクションの制御が行われます。正常に処理が終了した場合はコミットされ、例外がスローされた場合はロールバックされます。
個別にトランザクションの制御を行う場合、以下のようにConfigオブジェクトからJdoPersistenceManager経由でPersistenceManagerオブジェクトを取得し、自前でトランザクションを制御することができます。
JdoPersistenceManager manager = (JdoPersistenceManager) Config.getPersistenceManager(); Transaction tx = manager.getPersistenceManager().currentTransaction(); tx.begin(); try { ... tx.commit(); } catch(Exception ex){ tx.rollback(); }
なお、JdoPersistenceManagerはデフォルトではトランザクション制御を行いません。上記のようなトランザクション制御を利用する場合は以下のようなサブクラスを作成し、framework.propertiesのpersistenceManagerに指定します。
public class TransactionalJdoPersistenceManager extends JdoPersistenceManager { public TransactionalJdoPersistenceManager(){ super(true); } }