今までJPA2.0のCriteriaを試してみた感想とかそこらへんを書いていこうと思います。 結論から言うとCriteriaはJavaによるプログラミングを追求しているって感じじゃないのかなと*1。 ANDやORの使い方について この感想を書くにはGoogle Collections Libraryで提供されているとあるAPIの事を取り上げねばならないのでまずはそちらについて。 Google Collections Libraryにはいろんな機能があるのですが今回関係するのはPredicate、Predicates、Iterablesといったクラスです。これらを使うとJavaでクロージャーを使う感じでListの絞り込みとか出来るようになります*2。ちなみにこのやり方はNext Generation Java Programing Styleの3番目に紹介されているやり方です。例えば下記はE
データベースにH2を使ってCRUDのパフォーマンス比較をしてみました。それぞれ3回実行して真ん中の値を使っています。コードや使用しているライブラリはリポジトリにあります。 https://www.seasar.org/svn/doma/trunk/or-mapper-benchmark/ 10000件SELECT 529,419,874 (nanoTime) : DomaSelectOwnerTest 137,686,988 (nanoTime) : JdbcSelectOwnerTest 1,048,970,551 (nanoTime) : JpaSelectOwnerTest 303,612,949 (nanoTime) : S2DaoSelectOwnerTest 750,473,864 (nanoTime) : S2JdbcSelectOwnerTest 10000件INSERT(
JPA1.0では楽観的ロックだけ仕様が定義されていた。実際は各プロバイダが独自にヒント等で悲観的ロックを用意していたのだが、それもやっと定義されたために安心して使うことが可能だ。 楽観的ロックはバージョン番号を用意し、トランザクションの開始直前に取得した番号を元に更新にしくというもの。もしそれが存在しない場合、すでに更新されたものとみなし、トランザクションを最初からリトライさせる。 たまに楽観的ロックのようにバージョン番号を利用した値を画面表示時にあらかじめ持っておくといった、アプリケーションでのロックをかけてるところも多いけど、それは楽観的ロックではなく、そういう仕様のアプリケーション。あくまでもトランザクションをどう整合性とるかというだけが楽観的ロックだ。 そもそも更新時にはどのみち行ロック等がかかるわけで。更新方法によってロックがかかる順番が変わることも多いため、デッドロックの可能性
Comprehensive open-source Java persistence solution addressing relational, XML, and database web services. Try it today JPA Provides standards based Object-Relational persistence solution with additional support for many advanced features. EclipseLink JPA provides advanced support for leading relational databases and Java containers. View details » MOXy Enables Java developers to efficiently bind
前回はEJB 3.0のインターセプタ機能を使ったセッションBeanとコンテナ管理によるトランザクションについて説明しました。今回はJava EE(Enterprise Edition)やJava SE(Standard Edition)におけるO/Rマッピングの標準になる「Java Persistence API」*1を紹介しましょう。 Java Persistence APIを使うメリットは大きく二つあります。一つ目は,少ないプログラム・コードでデータにアクセスできることです。Java Persistence APIは,Javaオブジェクトをデータベースに格納したり,データベースのデータをJavaオブジェクトへ変換したりする処理を自動化してくれます。したがって,データベース・アクセス用のAPIであるJDBCを直接使ったアプリケーションよりも少ないプログラム・コードでデータベースへのアクセ
GlassFish上で動かすJPA実装をまじめに乗り換えようと思うのでもうちょっと調べてみた。DBはPostgreSQL。 LAZYは問題なく動くか まったく問題なし。TopLinkと並んで安心して使える。 ID生成は @GeneratedValue(strategy=GenerationType.AUTO)はGenerationType.TABLEと同じ。 おそらくほとんどの場合、ID生成はGenerationType.IDENTITYだろう。 strategy=GenerationType.IDENTITYは当たり前だがidはinsertせず。 そしてその後 executing prepstmnt 27464544 SELECT CURRVAL('item_id_SEQ') となって値をシーケンスから取得している模様。これをidのプロパティへセットしているのだろう。 LAZY指定なしの
OpenJPAは、Java EE 5で導入されたEJB3.0(JSR220)のうち、Java Persistence API(JPA)を実装したオープンソースプロダクトです。2007年8月28日にバージョン1.0.0がリリースされました(1.0.0のアナウンス)。配布はApacheライセンスの下で行われています。 これが組み込まれているプロダクトには、Spring FrameworkやApache Geronimoがあります。Apache Geronimoは、2007年8月20日にリリースされたバージョン2.0.1がJava EE 5互換の認定を受けています(リリース時のアナウンス)。 また、OpenJPAは商用製品のBEA Kodoのベースにもなっています。というよりも、BEA KodoにおけるJPAの実装が2006年2月にApache Software Foundationに寄贈された
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く