はじめに JPAを使うときの指針メモです。 JPQLではなくCriteriaを使う SQLを知っているとJPQLの方がとっつきやすいのですが、以下の理由からCriteriaを使ったほうがよさそうです。 CriteriaはDB変更に強い JPQLはタイプセーフではないので、Entityクラス名や変数名が変わってもコンパイルエラーになりません。 対応箇所は自分で洗い出すか、動かしてエラーになるまでわかりません。 一方Criteriaは、Entityを変更した時点でコンパイルエラーになるので対応箇所がすぐにわかります。 JPQLをデバックするのは大変 SQLと違ってDBのコンソールで試すことが出来ないので、SQLの感覚で長いJPQLを書いてエラーになったらデバックするのがかなり大変です。 エラーメッセージとにらめっこする羽目になります。 コード例