読者です 読者をやめる 読者になる 読者になる

C Sharpens you up

http://qiita.com/yuba に移しつつあります

EBeanのトランザクションがtry-with-resources構文で書けるようになります

Play! 2.x Java

Play!(2.2以前)も採用している軽量O/RマッピングライブラリEBeanに出していたプルリクエスト*1が通ったので手前味噌。

これまでEBeanでは、トランザクションはtry-finallyで書くのが基本でした。

 Ebean.beginTransaction(); 
 try { 
        Order order = Ebean.find(Order.class,10); ...
 
        Ebean.save(order);
 
        Ebean.commitTransaction();
 } finally { 
        Ebean.endTransaction(); 
 }

Java7にはtry-with-resourcesという構文があり、finallyやendTransactionを自分で書かなくてよくなるというものなのですが、EBeanのトランザクションはその対象ではありませんでした。Closeableインターフェースを実装していなかったからです。

Closeableインターフェースを実装するというだけのプルリクエストを出していたのですが今回受理され、EBean 3.2.6からはこういう書き方が可能になります。

 try(Transaction tran = Ebean.beginTransaction()) 
 try { 
        Order order = Ebean.find(Order.class,10); ...
 
        Ebean.save(order);
 
        tran.commit();
 }

ちょっとスマートになりますね!

3.2.6がリリースされたらPlay!の各バージョンからもbuild.sbt(またはBuild.scala)に

"org.avaje.ebeanorm" % "avaje-ebeanorm" % "3.2.6",

の一行を書き加えることで利用できます。

*1:オープンソースソフトウェアに独自に改良を加えたとき、本家にその改良の採用を依頼すること。開発者向けSNSGitHubの機能です。