【eclipse】【Java】 JPAを利用してDBのテーブルからgetter/setterの自動生成

こんにちは、たくじろう(@takujiro_0529)です。

今回はデータベースのテーブルのスキーマ情報からgetter/setterを自動で生成する方法を紹介します。

利用する環境は、
eclipse
Java 1.8
postgreSQL
です。

スポンサーリンク




テーブルの作成

今回はテスト用にテーブルのテーブルをpostgreSQLで作っていこうと思います。

localhostのテーブルに、下記SQLを流します。

create table weather (
    no numeric(1),
    city varchar(80),
    temp_lo numeric(3,2),
    temp_hi numeric(3,2),
    prcp real,
    date date,
    constraint KEY_NAME primary key (
        no,
        city
    )
);

これは天気についてのテーブルをイメージしていますが、自動生成の内容にはそこまで関係ないので、特に説明はしません。

JPAプロジェクトを作成する

JPAプロジェクトを作成していきます。

まずは新規Javaプロジェクトを作成します。 「File」→「New」→「Java Project」をクリックします。

プロジェクト名は好きな名前をつけてください。
Javaのバージョンは 1.8を設定して、「Fiinish」をクリックします。

パッケージエクスプローラーにできたプロジェクトを右クリックして「Properties」をクリックします。

ウィンドウの左枠から「Project Facets」、右枠から「Convert to faceted from…」をクリックします。

JavaとJPAにチェックを入れてください。
Javaのバージョンが「1.8」になってることを確認できたら、「Further configuration required…」をクリックします。

「Platform」「EclipseLind 2.5.x」に変更します。
「JPA implementation」「Type」「Disable Library Configuration」に変更します。
次に、「Connection」「Add connection…」をクリックします。

データベースの接続タイプを設定していきます。
今回はPostgreSQLを利用しますので、「PostgreSQL」を選択して、「Next >」をクリックします。

次にPostgreSQLと接続するためのドライバーを決めます。
「Drivers」の右側にある「+」(のような)アイコンをクリックします。

ドライバーの選択をしていくのですが、ドライバーをダウンロードしていない場合は、下記URLからPostgresSQLのバージョンに合わせてJARをダウンロードしてください。

下枠の「PostgreSQL JDBC Driver」をクリックして、タブの「JAR List」を選択します。

すでに用意されているJARファイルがあると思うのですが、そちらが利用できない場合は右側にある「Clear All」をクリックして削除します。

次に、右側の「Add JAR/Zip…」をクリックし、利用したいJARを選択したら「OK」をクリックします。

画面が戻ると、接続情報を記載する枠が出てきますので、そこに情報を入力していきます。

私がつまずいたのですが、URLの最後に記載されている「database」はデータベース名を入力する部分ですので、間違わないようにしてください。

入力できたら、一度右下の「Test Connection」をクリックして接続できているかテストしてみてください。接続できていると、下記のウィンドウが出ます。

接続テストが成功したら、「Finish」をクリックします。
はじめのウィンドウにもどり、下記のようにすべての設定ができていたら「OK」をクリックします。

「Project Facets」のウィンドウに戻ったら「OK」をクリックします。

これでJPAプロジェクトの作成の工程は終了しました。作成が完了しているかどうかを確認します。

「Package Explorer」にある今回作成したJPAプロジェクトをの「src」→「META-INF」配下に「persistence.xml」が生成されていればOKです。

getter/setterを自動生成する

先ほど作ったJPAプロジェクトを実行して、getter/setterを自動生成していきます。

「File」→「New」→「Other」をクリックします。

「JPA Entites from Tables」を選択し、「Next >」をクリックします。

先ほど作ったJPAプロジェクトを選択し、「Next >」をクリックします。

「Tables」に最初に作ったテーブル「weather」が出てくるので、チェックを入れて「Finish」をクリックします。

これでJPAプロジェクトの実行が完了です。

JPAプロジェクトの「src」配下に「model」が作られています。
その中に、自動生成されたjavaファイルがあります。

生成後の方の定義

PostgreSQLで指定した型が、Javaファイルを生成したときにどのような型として定義されるのかの一覧です。

PostgreSQL Java
varchar String
char String
integer Integer
smallint Integer
bigint Long
numeric BigDecimal
real floot
date Date
timestamp Timestamp
bytea bytea[]

自動生成のメリット

たくさんのテーブルの受け皿を用意したいときに、すごく便利な機能だと思います。

また、プライマリキーが別に生成されるのもコーディングしていく中で利用しやすいのではないでしょうか。

自動生成のデメリット

自動生成をする際に、2つの注意があります。

1つ目は、生成されてたjavaファイルの変数の順番が、テーブル定義のカラム順ではなくアルファベット順になっていることです。

2つ目は、いろんなアノテーションが入っていたりするので、そのあたりの調整が必要です。

補足:2回目以降の実行方法

一度実行したJPAプロジェクトを再度実行する方法を紹介します。

プロジェクトエクスプローラーにある、一度実行したJPAプロジェクトを右クリックし、「JPA Tools」→「Generate Entitise from tables…」を選択します。

ここで実行画面がでてきますので、もしテーブル情報が変わった際にはここから再実行できます。

まとめ

メリットでも言いましたが、いっぺんにたくさんのテーブルの受け皿を作成する際にかなり便利なツールでしょう。

しかし、変数の順番を気にしない人は少ないとは思います。その辺の修正を行うのがどうしても手間になってきてしまいます。

他にも自動生成ツールはいくつかあるようですが、eclipseのデフォルトツールとして利用できるので、そこは便利ですね。

byたくじろう(@takujiro_0529)

スポンサーリンク

スポンサーリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする