JPA2.0

JPAのManyToOneにおける各ベンダーの違い

JPAで*1エンティティー間の多対一のリレーションを表現する@ManyToOneですが、こやつの振る舞いがベンダー間でちょっと違うようなのでメモしておきます。 振る舞いの違い どう違うのかというと、参照先のエンティティが物理的に存在しなければ取得時にEntity…

JPA2.0のタイプセーフCriteriaAPI感想とGoogle Collections Library

今までJPA2.0のCriteriaを試してみた感想とかそこらへんを書いていこうと思います。 結論から言うとCriteriaはJavaによるプログラミングを追求しているって感じじゃないのかなと*1。 ANDやORの使い方について この感想を書くにはGoogle Collections Library…

NetBeans6.8でJPA2.0を試してみる。 - その7

さて、間隔が開きすぎてしまいましたが、Criteriaでの外部結合です。そういえばNetBeans6.8でやってるんですが、やはりMetamodelの自動生成機能はありません・・・。これは正直かなり悲しいです。というかMetamodelを自力で書くの超メンドクサイです・・・。…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その6

今回はJoinです。Joinの中でのJPQL独自と言っていいパス式によるJoinを試してみたいと思います。下記のようなEntityがあるとします(CustomerとDiscountCodeの関係は1対多 多対1。今回はMetamodelは省略) @Entity @Table(name = "CUSTOMER") public class C…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その5

昨日下書きの途中まで書いていた内容に関する事をずばりid:trygunさんがこちらにて指摘されています。 そうなんです。JPA2.0のCriteriaでは「or」の使い方が特殊というか、SQLやJPQL的な書き方と違うようです。ちなみに自分は最初ハマりましたw以下に出てく…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その4

今回はMetamodelAPIを使ってSQLでいうところのWhere句とかそこらへんとかやってみます。んで、いろいろやる前にCriteriaBuilder、CriteriaQueryおよびRoot作成までの処理。 CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery<Customer> cq = qb.createQuer</customer>…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その3

さて、いよいよMetamodelの作成。 Metamodelにいろいろある仕様を簡単に列挙してみます。 entityというパッケージにあるCustomerというエンティティクラス*1に対するMetamodelのクラスはentityパッケージ内にCustomer_というクラス名で作成される*2 Metamode…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その2

JPA2.0はまだリリースされていない状況なのでJSRのサイトにあるProposed Final Draft(最終提案ドラフト、最終ドラフト提案??)の資料を元に試していこうと思います。ちなみに英語はからきし駄目ですが、サンプルのソースコード見ればなんとかなるんじゃね?…

NetBeans6.8 BetaでJPA2.0を試してみる。 - その1

NetBeans6.8のBetaがリリースされました。 JavaEE6への対応が着々と進んでいるようですが、ここらで1つJPA2.0を実際に試してみようと思います。ちなみにJPA2.0は「JSR317」として「Java Persistence2.0」という名前で提案されています。今後はJPAとは言わな…