/JPA(EclipseLnk)のEntitiyをPostgresqlデータベースから自動生成してValidationまで2016.04.26JPA(EclipseLnk)のEntitiyをPostgresqlデータベースから自動生成してValidationまでTweetTweetJPA(EclipseLnk)のEntitiyをPostgresqlデータベースから自動生成してValidationまでの実装(?)について記載します。EclipseLinkのJPAはものすごく簡単に便利な機能を提供してくれてます。テーブルの定義がしっかりしていたらその定義のままにEntitiy(Bean)を作成してくれます。最初のEclipse自体のセットアップとJPAプロジェクト作成については以下が参考になりました。DBとテーブルを作成しておきます。JPAパースペクティブを開き、DBへの接続設定を登録します。Table...」を選択するとEntity作成ウィザードが立ち上がります。アノテーションに自動付与してくれるので便利です。@Idはプライマリキーに対して設定されます。使って@Idに自動付与してくれるようにします。Entityに対してのSQL設定についてSQLはJQLという形式でEntityManager.CreateNamedQueryで定義できたり、SQLそのまま書けるEntityManager.CreateNativeQueryと、動的にソースの中で作成していけるCriteriaBuilderを利用する3つの方法があります。SQLをそのまま利用したい場合はCreateNativeQueryでよいですし、単純なレコード取得・更新・作成が多ければNamedQueries({NamedQuery(...)[...]})といった形式でEntityに直に書いていった方が楽かもしれません。抽出条件が動的に変わるならCriteriaBuilderをお勧めしますが、やはりJOIN等でテーブル関係が複雑になるようだったらデータベース側でViewを作ってしまった方がよいでしょう。らかに新規データの時は、EntityManager.persistを使った方がよさそうです。Insert)をする場合は、EntityManager.mergeを利用します。その際に注意点が1つ。更新時は更新対象のレコードをEntityManager.findや上記NamedQueryなどを利用して、Entityへデータを読み込んでおく必要があります。プライマリキーが設定されていたらUpdateして、未設定ならInsertしてくれるんだと思います。あたりまえですが、その際にユニークキーが他のレコードなどと被っているとInsert時にエラーとなったりしてしまいます。時のJPAのEntityに対してValidationをする場合の参考となるソースが上記記載されています。単純にできて便利です。上級?JPAでメタモデル後日記載。eclipseでJPAのメタモデルを自動生成する設定TweetTweetJavaSNSでもご購読できます。TwitterでフォローするFeedlyでフォローするcova香川・大阪を拠点として活動しているシステムエンジニアです。