JPA

Hibernate StaticMetamodel Generator Annotation Processor を動かす

Hibernate 3.5.0-Beta-2 がリリースだそうです。で、メタモデルを出力するaptの実装 Hibernate StaticMetamodel Generator Annotation Processor にも言及しています。さっそく試そうとしたのですが、Hibernate 3.5.0-Beta-2の配布ファイルには含まれていま…

Gavin KingによるJPAのCriteriaをタイプセーフにしようぜというアイデア

JPA

http://relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPAjavax.jpa.metamodel.Entity とか javax.jpa.metamodel.Attribute といったメタモデルのクラスをサポートして、Criteriaをタイプセーフに記述できるようにするのはどうか、メタモデルのコードは…

Sun Tech Daysにいってきた

いくつか内容をまとめ。 GlassFish and the Future of Java EE 当然マシンにもよるがGlassFish v3はそこそこのスペックなら1秒で起動するらしい。 それくらい速ければ、たしかに便利だと思う。アプリケーションからGlassFishを起動できるというEmbeddable Gl…

Java Persistence 2.0 のスペックリード Linda による Criteria API の解説

JPA

JPQLとCriteriaを並べて解説してくれています。仕様書を読んだ人には新しい発見はないかも。http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public1

JPA2.0のCriteria API

JPA

小林さんのコメントで知りましたが、JPA2.0のPublic Reviewが出ています。 PDFのダウンロードはこちら。http://jcp.org/aboutJava/communityprocess/pr/jsr317/index.htmlPublic ReviewのメインはCriteria APIです。p.192から抜粋するとCriteriaのAPIの利用…

JPAはどれだけSQLの方言の差異を吸収できるのか

JPA

JPAはSQLの方言の差異を吸収するけど、具体的に何を吸収してくれるのか。ちょっと整理。 ページングの構文の違い たとえば、Oracleだとrownumと副問い合わせを組み合わせて実現するけど、MySQLだとlimit/offsetを使うとか。 ファンクションの違い(文字列操…

JPQLの集計関数に価値はあるか?

JPA

まったく価値がないわけではない。次のようにHAVING句で集計関数を利用してSELECT句でエンティティを返す場合は便利だ。 select d from Department d left outer join d.employees e group by d having count(e) > 5 Javaのコード上でもエンティティとして受…

「JPA入門」本が今日発売されました。

Seasar2とHibernateで学ぶデータベースアクセス JPA入門作者: 中村年宏出版社/メーカー: 毎日コミュニケーションズ発売日: 2008/02/29メディア: 単行本(ソフトカバー)購入: 7人 クリック: 374回この商品を含むブログ (19件) を見る新宿の紀伊国屋にいった…

Java Persistence API(JPA)入門本

Seasar2とHibernateで学ぶデータベースアクセス JPA入門作者: 中村年宏出版社/メーカー: 毎日コミュニケーションズ発売日: 2008/02/29メディア: 単行本(ソフトカバー)購入: 7人 クリック: 374回この商品を含むブログ (19件) を見るJava Persistence APIに…

JPQLのdistinct

気になったのでちょっと調査。部署(Department)と従業員(Employee)のエンティティが多対1のときで考えてみます。 JPQLでdistinctつけてDepartmentからEmployeeをfetch joinします。 JPQL List<Department> list = entityManager .createQuery( "select distinct d from D</department>…

Seasar Conference 2007 Autumn 後夜

昨日はSeasar Conferenceでした。多くの方にご来場いただきました。どうもありがとうございました。よろしければアンケートにご協力ください。俺はこういうセッションが聞きたいんだ!的なことを書くと次回のカンファレンスで意外とあっさり実現するかも? h…

Seasar Conference 2007 Autumn 前夜

明日はSeasar Conferenceです。 http://event.seasarfoundation.org/sc2007autumn/ JPA & Kuina-Dao入門というタイトルでお話します。資料を公開しましたのでこられる方もこられない方もよかったら読んでみて下さい。 http://event.seasarfoundation.org/sc2…

Apache Cayenne 3系初のマイルストーン登場 - 新たにJPAに対応

JPA

http://journal.mycom.co.jp/news/2007/07/30/003/index.htmlCayenne 3が出たみたい。Kuina-Daoで対応しないと!

JPAとADO.NET Entity Framework

JPA

.NET Framework 3.5でADO.NETにEntity Frameworkという新しい機能が導入されるそうです。これは何かというと一言でいえばO/Rマッピングフレームワークなのですが、面白いのはJPAによく似ているということです。日本語での解説記事 http://msdn.microsoft.com…

JPAとデータベース設計

JPA

昨日に引き続きJPAの宣伝?です。JPAってデータベース設計に興味があるんだけどなかなか実際に設計する機会に恵まれないといった人にとって結構いい教材なんじゃないかなぁと思います。HibernateはエンティティクラスからDDLを生成する機能をもっているので…

Java Persistence API(JPA)はHibernateのNative APIより簡単

Hibernateを使うのだけどJPAがよくわからないからNative APIを直接使っているという方や、Hibernateを学習したいのだけど機能が多すぎて辟易しているという方が実は結構多いんじゃないかと感じています。そこで、今日はSeasar2とは関係なくHibernateのNative…

@TableGeneratorつかってみた

JPA

もっとJPAのこと書いていかないとなぁということで@TableGeneratorを使ってみました。 TableGeneratorという単語を見るとテーブルを生成することを意味するかのように思えてしまうのですが、そうではなくてテーブルをつかって主キーを生成するためのものだっ…

JPA、とりあえず覚えたい5つのアノテーション

JPA

前回のエントリを見直してグループを3つに分けてみました。アルファベット順ではなく優先度順で並べています。とりあえずAグループの5つのアノテーションを覚えればJPAで簡単なサンプル(よくあるEmpとDepとか)を楽しめるはず。JPAのデフォルトのマッピング…

Guice WebExtensions Persist ?

JPA

正式名称がこれであっているのかよくわからないのですが、GuiceとHibernateを組み合わせたものみたいです(今後はJPAもサポートするらしいです)。 http://www.wideplay.com/guicewebextensions2Guice WebExtensions Persistの一機能であるDynamic Findersを…

JPA、とりあえず覚えたい10のアノテーション

JPA

なんとなくJPAのアノテーション数えてみたら64個ありました。でもよく使うのって少ないと思う。とりあえず覚えたい10個(アルファベット順) @Column @Entity @GeneratedValue @Id @JoinColumn @ManyToOne @OneToMany @PersistenceContext @Table @Version …

Dali JPA Tools さわってみました その2

JPA

やはり、昨日はFKの定義を忘れていました(というか、定義されていると思い込んでましたorz)。リレーションシップの設定してくれなくて当然でしたね。 改めて試してみたところリレーションシップのマッピング定義も生成されました。生成されたコードは下の…

Dali JPA Tools さわってみました

JPA

使ってみたバージョンは0.5。以下のサイトを参考にしました。 http://journal.mycom.co.jp/articles/2007/02/13/dali/index.html http://www.eclipse.org/webtools/dali/main.php 確認できたこと/気づいたこと H2は正式サポートされていなけどH2上のテーブル…

Dali JPA Tools さわってみました(追記)

JPA

下で「リレーションシップを認識して@ManyToOneとかをつけてくれるわけではなかった」と書きましたが、そういえばFK張ってなかったかも... 今日もう一回試してみます。

JPQLのHAVING句の変な仕様?

JPQLのHAVING句ですが、TopLinkでは以下のクエリが動きませんでした(Hibernateでは問題なく動きます)。 SELECT e.department.id, MAX(e.salary) FROM Employee e GROUP BY e.department.id HAVING MAX(e.salary) > 1000 一見、まったく問題なさそうなので…

JPQLでスター型のクエリができない

ここで言うスター型のクエリとは、 EmployeeエンティティとProjectエンティティの関連が1対多、 EmployeeエンティティとPhoneエンティティの関連が1対多、 ProjectエンティティとPhoneエンティティのプロパティを条件にしてEmployeeエンティティを取得 とい…

JPQLのHAVING句

JPA

The HAVING clause must specify search conditions over the grouping items or aggregate functions that apply to grouping items. ドキュメントに上のようにあるのですが、JPQLのHAVING句ってなんだか制限がきついですね。 下の3つのJPQL(それぞれHAVING…

FlushModeType.COMMITでSELECTすると削除されたEntityが読めるのか?

Java EE勉強会で「FlushModeType.COMMITを指定してremovedなエンティティを読もうとしたら例外が起きるということが仕様書に書いてあったような...」と言ったのですが、言った後だんだん自信がなくなってきました。ちょっとS2Hibernate-JPAを使って試してみ…

EntityNotFoundExceptionにはThrowableを受け付けるコンストラクタがない

Java EE勉強会でThrowableなクラスにThrowableを受け付けるコンストラクタがないやつがあるという話がありました。実は下に出てきたEntityNotFoundExceptionもその1つ。 http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityNotFoundException.h…

Merge実行時にSELECT文が実行されるのか?

試してみました。

エンティティクラスとテーブル名

「@Tableでテーブル名を指定しなければクラス名がテーブル名になる」というは正確ではなないと言いたかったのですが、うまく説明できたようなできなかったような...。 ちょっとまとめてみます。エンティティクラスを作るときって、意識する名称が3つあるって…