システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る

JPA

全般

Java EE 8がそろそろ固まってきたのでJPA 2.2のJavaDocを日本語に翻訳し始めた(2/3完了) - 水まんじゅう

JavaEE使い方メモ(JPA その1 - 基本) - Qiita

Hibernate Entity Manager リファレンスガイド - Red Hat Customer Portal *1

JavaEE Code探索 その3 〜 トランザクション属性 〜 - A Memorandum

JPA2.1でエンティティからインデックスを自動生成する - 水まんじゅう

spring-data-jpa アンチパターン - Qiita

EntityManager

JavaEE7をはじめよう(14) - Producerの効果的な利用方法 - エンタープライズギークス (Enterprise Geeks)

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

JAX-RS(Jersey)とJPAのサンプルにCDIを使ってTomcatで動かす - Qiita

JPAとJTAをJavaSE環境で使えるようにする: すふぃあの記憶

@RequestScopedにする。

トランザクション

JavaEE使い方メモ(JTA) - Qiita

Jerseyでリソースメソッドをトランザクション境界にする — 裏紙

大量処理

JPAで少しずつデータを処理する方法を考える - 見習いプログラミング日記

メモリを逼迫させずにJPAで大量データを取得する方法 - エンタープライズギークス (Enterprise Geeks)

Native Query

JavaEE7をはじめよう(5) - JPAクエリ(その2) Native Query - エンタープライズギークス (Enterprise Geeks)

SQL文を外部ファイルに|老いぼれSEの艱難辛苦

Builderパターン

JPA Builder パターン - Kohei Nozaki's blog

トランザクション

[Spring] 宣言的トランザクションがネストした時はどうする!? REQUIRES_NEWを使ってみた | Developers.IO

作りたい共通部品

  • Listインターフェースを良い感じにパラメータとして設定できるようにする
    (とりあえず、数値と文字列だけ)
  • Listが空の場合はnullin()にならないようにする)*2
  • SQLの参照はパッケージをフォルダにする*3
  • JPABuilderをEntityの情報からAnnotationProcessorで自動生成
  • JPAの型情報からフィールド毎のBeanValidationをAnnotationProcessorで自動生成
    全体でフィールド名が重複している場合はエンティティ名を接頭文字につける。
    同じドメインにしたい場合は、アノテーションドメイン名を指定。重複している場合は「マージ」
    必須(NotNull)は対象外(集約であるEntityにとって必須という扱いと考えるから)
  • Eneityクラスからテーブル定義的(とりあえずhtml)なものをAnnotiontionProcessorで自動生成。
    (重複しているドメインがある場合、備考にその旨を追記すると後々ありがたい機能になる気がする。)

note

  • SQLファイル読み込みの仕組みはorm.xmlがあるけど使わない(リンクはメモ)。

その他

Spring Data JDBC Preview - Qiita

*1:仕様に目を通すのは大事

*2:Domaの2waySQLを参考

*3:Doma方式を参考