JPAには非常に期待している人も多いでしょう。私もその一人です。実際にプロジェクトで使ってみて、見えてきた問題点を書いてみます。JPAの実装としては、Hibernate3.2を使っています。 学習コストが高い。 JPAの全機能のうち、プロジェクトで使うものに絞り込んで教育すると、3日程度で教えることができるのですが、そこそこ使えるようになるには、2〜4週間かかります。これは、Hibernate in Actionにも書いているのでそういうものなんでしょう。 トラブルシューティングが難しい。 多くのプロジェクトで実際にハマルのはこれでしょう。うちのプロジェクトでは、Hibernate職人である小林さんがいるにもかかわらずいろいろ苦労しました。Hibernate職人のいないプロジェクトで使うのは厳しいのではないかと思います。 SQLの扱いが貧弱。 JPQLは、SQLのかなり貧弱なサブセットなの
OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。 LASYフェッチによるN + 1 問題を回避するために、結合先テーブルの要素を一気に持ってくるJOIN FETCHを使ったところ、引き換えにJavaヒープ使用量が多くなるのはよくあるケースです。 以下のような、1つのIssueに対して複数のIssueAttributeを持つ1対多関連のエンティティの操作を例に、OutOfMemoryErrorを少しでも避ける方法を考えてみます。 @Entity public class Issue implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int issueId; private String tit
JPA(Java Persistence API)は、データベースから取得したデータをメモリ上に保持する仕様になっている。 そのため、不用意に大量のデータを取得すると、メモリ容量を圧迫してしまい、最悪の場合はOutOfMemoryErrorが起きる可能性がある。 本稿では、JPAの標準機能およびネイティブ機能のそれぞれについて、メモリ使用量を抑えながら大量データを取得する方法と、ネイティブ機能がうまく動作しない場合の回避策を紹介する。 JPAは読み込んだデータを一次キャッシュとして保持する JPAは、読み込んだEntityをPersistenceContext(永続化コンテキスト)と呼ぶ領域で管理する。 ここに格納された状態を一次キャッシュと呼び、一次キャッシュされたEntityをManagedな状態(JPAに管理された状態)と呼ぶ(なお、二次キャッシュもあるが割愛する)。 Persist
Summary: Nested | Field | Constr | Method Detail: Field | Constr | Method
JpaRepositoryでは、メソッド名の名づけ方さえわかれば、必要なメソッドをささっと書いて追加できてしまいます。処理は一切必要なし。ただメソッドの宣言文を書くだけです。ただし、「あらかじめ決められたルールに従ってきちんとメソッド名をつけてあれば」です。適当に名づけただけでは、メソッドは自動生成されないのです。 では、どのような形でメソッド名をつければいいのでしょうか。ここでその命名規則について簡単に整理しておきましょう。 ●findBy○○ 基本は、これです。「findBy」の後にエンティティのプロパティ名を続けて記します。このプロパティ名は、最初の1文字目は大文字にします。例えば、nameから検索するなら「findByName」ですし、mailから探すなら「findByMail」となるわけです。 これ以降は、この基本形である「findBy○○」の後に続けて書くものになります。 ●L
The document discusses Spring Data JPA and entity relationship mappings. It provides examples of mapping entities with relationships like OneToMany and ManyToOne using annotations. It also demonstrates various JPA operations like persisting, updating, deleting entities and querying relationships with examples of the generated SQL.Read less
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く