エンタープライズギークス (Enterprise Geeks)

企業システムの企画・開発に携わる技術者集団のブログです。開発言語やフレームワークなどアプリケーション開発に関する各種情報を発信しています。ウルシステムズのエンジニア有志が運営しています。

JPA

JavaEE7をはじめよう(26) - Bean ValidationとJPAの連携

前回は Bean ValidationのListとgroupsを使って、複雑な制約条件を記述する方法を紹介した。今回は Bean Validation を組み込んだフレームワークの例として、JPA での使用例を紹介する。 JPA では、エンティティクラスに制約アノテーションを設定することで…

JavaEE7をはじめよう(9) - JPA TIPS

今回はJPAのまとめとして、JPAをより良く使う方法や知っておくとよいトピックについて述べる。 1. テーブル定義とエンティティクラス定義の整合性を保つ仕組み 以前の記事で紹介したように、JPAではスキーマジェネレーションを用いて、エンティティクラスか…

JavaEE7をはじめよう(8) - JPAでのID定義

前回までJPAの使用方法を解説してきた。今回は、JPAを利用する上で、テーブルの主キーおよびエンティティのIDの設計で考慮しておくべき事柄を説明する。 複合主キーの定義方法 IDの定義方法を検討をするために、まずJPAでの複合主キーの定義方法を解説する。…

JavaEE7をはじめよう(7) - Querydslとストアドプロシージャ

前回までの3回の記事で、JPAが提供する3つのクエリの定義方法を紹介した。 今回はJPAクエリの番外編として、Querydslとストアドプロシージャを紹介する。 Querydslの概要 Querydsl は様々なクエリを生成するためのDSLライクなAPIを提供するオープンソースのJ…

JavaEE7をはじめよう(6) - JPAクエリ(その3) Criteria API

前々回と前回の記事で、JPAが提供する3つのクエリの定義方法のうち、JPQLとNaitiveQueryについて解説した。 今回は、最後の1つであるCriteria APIについて解説する。 Criteria API Criteria API は、API呼び出しによってクエリオブジェクトを構築する方法で…

JavaEE7をはじめよう(5) - JPAクエリ(その2) Native Query

前回の記事ではJPAのクエリの定義方法のうち、JPQLについて解説した。 今回はNative Queryについて解説する。 Native Queryとは Native Queryは直接SQLを実行する機能であり、JPQLではサポートされてないSQLやデータベース製品固有の方言などを実行すること…

JavaEE7をはじめよう(4) - JPAクエリ(その1) JPQL

今回から3回に分けて、JPAでエンティティを検索する手段であるクエリを解説する。 JPA では javax.persistence.Query というオブジェクトで、問い合わせの内容を表す。 このQueryを作成する方法は以下の3種類がある。 JPQL (Java Persistence Query Language…

JavaEE7をはじめよう(3) - JPAの永続性コンテキスト概要

前回の記事では、JUnit上で動作するJPAのサンプルコードを紹介した。 今回は、前回のサンプルをベースにして、JPAを使う上で重要な機能である永続性コンテキストについて解説する。 永続性コンテキスト JPAは永続性コンテキストというある種のバッファのよう…

JavaEE7をはじめよう(2) - JPAの基本

JPA(Java Persistence API)は、データベースなどの永続化記憶とJavaのオブジェクトとのマッピングを定義して、SQLをあまり書くことなくデータベースとの同期を取ることができる仕組みである。 JPAはO-Rマッピングだけでなく、永続化コンテキストによる同期…

メモリを逼迫させずにJPAで大量データを取得する方法

JPA(Java Persistence API)は、データベースから取得したデータをメモリ上に保持する仕様になっている。 そのため、不用意に大量のデータを取得すると、メモリ容量を圧迫してしまい、最悪の場合はOutOfMemoryErrorが起きる可能性がある。 本稿では、JPAの…