EBeanのトランザクションがtry-with-resources構文で書けるようになります
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",
の一行を書き加えることで利用できます。