JPA

JPQLのfetch その2

JOIN (≠JOIN FETCH) JPQLはJOIN FETCHではなくJOINだけでも書ける。 @NamedQuery(name="Find", query="SELECT DISTINCT t FROM Team t JOIN t.members m") SELECT DISTINCT t1.ID, t1.NAME FROM member t0, team t1 WHERE (t0.teamId = t1.ID) 1 Aチーム SEL…

JPQLのfetch その1

タイトルの通りだが勉強不足でハマったのでメモ。 Java8 + JPA2.1 + eclipselink2.6 テーブル team id name 1 Aチーム 2 MP member id name teamId 1 ハンニバル 1 2 フェイス 1 3 B.A. 1 4 マードック 1 101 リンチ 2 102 デッカー 2 103 フルブライト 2 En…

DeltaSpike Data Module(使いそうなところだけ)まとめ4

Transactions ・・・DeltaSpike JPAも使うつもりだけど、完全に理解できていない。。。 特に指定せずに1トランザクション内で異なるRepositoryの更新ができるなら問題ないけど。。。 とりあえず 「the repository will figure out if a transaction is neede…

DeltaSpike Data Module(使いそうなところだけ)まとめ3

Query Annotations @QueryでJPQLが使える。 Queryアノテーション使う(Using Query Annotations) Repositoryに書く場合 public interface PersonRepository extends EntityRepository<Person, Long> { @Query("select count(p) from Person p where p.age > ?1") Long count</person,>…

DeltaSpike Data Module(使いそうなところだけ)まとめ2

Query Method Expressions メソッド名をちゃんと(分かりやすく)付ければコメントいらない。分かりやすいメソッド名でクエリを作ってしまおう。ということらしい。 メソッド式を使う(Using Method Expressions) @Entity public class Person { @Id @Generated…

DeltaSpike Data Module(使いそうなところだけ)まとめ1

DeltaSpike Data ModuleはRepositoryパターンを提供してくれるモジュール。 というのは昨日も書いた。実際に少し試してみる。 DeltaSpike 1.5.1 参考Data Module Project Setup 依存設定(Declare Data Module Dependencies) Maven前提。pomに「deltaspike-da…

DeltaSpike Data Moduleで複数EntityManagerを呼び分ける

DeltaSpike Data ModuleはRepositoryパターンを提供してくれるモジュール。 ・・・リポジトリ パターンは不勉強、とりあえす典型コード(boilerplate code)をすっきりさせてくれるらしい、と理解しておく。 DeltaSpike 1.5.1 参考 Data Module 本題 「複数のE…

複数のEntityManagerを切り替える(on CDI)

データベースが複数あるなどで、接続先を選びたい場合。 ついでにあやふやにしたままだったアノテーションも整理。 参考 JPA Module 環境 Java8SE Tomcat8 ※なので@PersistenceContextが使えません。使えるともう少し楽? Weld 2.3.1 単一EntityManager(変更…

JPAでデータソースからコネクションを取得

環境 Tomcat8 PostgreSQL9.4 データソース設定 参考 Apache Tomcat 8 (8.0.28) - JNDI Datasource HOW-TO JDBCドライバ配置 $CATALINA_HOME/lib にコピーしろって書いてあるけど、前エントリに書いたようにWEB-INF/libに置いている。 Resource設定 Contextに…

Tomcatでは@PersistenceContextは使えない

前エントリではEntityManagerをわざわざFactoryから生成している。 JPAについて書いているブログなどでは、@PersistenceContextでEntityManagerを取ってくるサンプルがあるし、DeltaSpikeのData Moduleのページにも@PersistenceUnitでEntityManagerFactoryを…

JAX-RS(Jersey) + JPA (on CDI) / on Tomcat

Tomcat上でJAX-RX(Jersey)を使う環境で、CDIからJPAのEntityManagerを取得するようにする。開発環境はeclipseでMarvenプロジェクトを使用。 分かりやすいサンプルがあったので楽勝・・・ではなかった。。。 参考(というかほぼそのまま) JAX-RS(Jersey)とJPA…