今回はJavaのFrameworkの一つMyBatisで遊んでみます。
RDBMSとの連携において開発の効率化の為には、Hibernate のようなO/Rマッピングフレームワークを利用するのが一般的ですが 既存のSQLを利用使用しつつも、DAOやEntityの自動生成、クエリの動的生成など、ちょっとした部分だけFrameworkで代用したいということはあると思います。
そんな時は比較的簡単に利用できるSQLマッピングフレームワークとしてMyBatisが便利です。
という訳で、今回から
- 第一章 postgreSQLの導入から設定(軽め)
- 第二章 mybatis-generatorによるMapper自動生成
- 第三章 MyBatis実装サンプル
今回の記事ではMyBatisで遊ぶための前準備としてデータを準備します。
第一章 postgreSQLの導入から設定(軽め)
検証に使用するDBはpostgreSQLを選択。接続対象のDBはリモートに建てました環境は以下の通りです。
OS | Windows 7 Enterprise SP1 64bit |
RDBMS | postgreSQL 9.3.2 |
FW | Mybatis 3.2.5 |
ホストIP | 192.168.100.100 |
1. postgreSQLのインストール
(1)ファイルダウンロード
公式サイトからインストーラー「postgresql-9.3.2-3-windows-x64.exe」をダウンロード記事作成時点(2014/2/26)での最新バージョンは「9.3.2」でした。
※いつの間にか「9.3.3」が出ているみたいですが手順は同じだと思います。
(2)インストール
インストール手順は、ウィザードの「Next」を押していけば完了するので省略します。collationを聞かれた場合は”C”を指定してください。
最後にアドオンツール導入のために、「Stack Builder」の起動を確認をされますが、今回は特に必要ないので、チェックを外してFinishです。
(3)設定変更(リモートホストからpostgresへ接続する為の設定)
今回はリモート環境のDBへ接続するので、「postgresql.conf」と「pg_hba.conf」を少しいじります。デフォルトインストールの場合「C:\Program Files\PostgreSQL\9.3\data」以下配下にファイルがあります。
以下変更が必要な場合は設定値を変更する
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) port = 5432 # (change requires restart) max_connections = 100 # (change requires restart)
# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 host all postgres 192.168.100.100/32 md5 # 接続を許可するデータベース、ユーザ、アドレスの範囲を指定 # 以下の場合はtestデータベースに対してmybatisuserユーザでのアクセスを192.168.100.0~192.168.100.255からの接続にのみに許可 host test mybatisuser 192.168.100.0/24 md5
2. ユーザ、データベース、スキーマ、テーブル作成
以下psqlで実行します。 psqlにPATHを通しておくと便利です。一時的にPATHを追加するには以下の通り
PATH %PATH%;C:\Program Files\PostgreSQL\9.3\bin常用する場合は環境変数に追記してください。
(1)ユーザとロールの関連付け、及びデータベースの作成
-- スーパーユーザーでログイン psql -U postgres -- クエリ実行結果の表示形式変更(お好みでどうぞ) \x -- ユーザ・ロール作成 ※サンプルなのでパスワードは適当です create role mybatisuser with NOSUPERUSER NOINHERIT LOGIN PASSWORD 'password'; -- データベース作成 create database test with owner mybatisuser; -- データベース作成結果確認 \l -[ RECORD 4 ]-----+---------------------- 名前 | test 所有者 | mybatisuser エンコーディング | UTF8 照合順序 | C Ctype(変換演算子) | C アクセス権 |
(2)スキーマ、テーブルの作成とサンプルデータの投入
-- ユーザ切り替え \c test mybatisuser -- スキーマ作成 CREATE SCHEMA my; -- テーブル作成 create table my.dept ( id int4, name varchar(256) not null, PRIMARY KEY(id) ); create table my.emp ( id int4, dept_id int4 not null references my.dept(id), name varchar(256) not null, tel varchar(12) not null, PRIMARY KEY(id, dept_id) ); -- テーブル確認 \d my.dept テーブル "my.dept" 列 | 型 | 修飾語 ------+------------------------+---------- id | integer | not null name | character varying(256) | not null インデックス: "dept_pkey" PRIMARY KEY, btree (id) 参照元: TABLE "my.emp" CONSTRAINT "emp_dept_id_fkey" FOREIGN KEY (dept_id) REFERENCES my.dept(id) \d my.emp テーブル "my.emp" 列 | 型 | 修飾語 ---------+------------------------+---------- id | integer | not null dept_id | integer | not null name | character varying(256) | not null tel | character varying(12) | not null インデックス: "emp_pkey" PRIMARY KEY, btree (id, dept_id) 外部キー制約: "emp_dept_id_fkey" FOREIGN KEY (dept_id) REFERENCES my.dept(id) -- データ挿入 insert into my.dept values (1,'Foundation') ,(2,'Sales') ,(3,'System'); insert into my.emp values (1,1,'Alfa','111-111-1111') ,(2,1,'Aileen','123-123-1234') ,(3,3,'Bravo','222-222-2222') ,(4,2,'Charlie','333-333-3333'); -- データ確認 select * from my.dept; id | name ----+------------ 1 | Foundation 2 | Sales 3 | System select * from my.emp; id | dept_id | name | tel ----+---------+---------+-------------- 1 | 1 | Alfa | 111-111-1111 2 | 1 | Aileen | 123-123-1234 3 | 3 | Bravo | 222-222-2222 4 | 2 | Charlie | 333-333-3333
これで第二章のmybatis-generatorを利用するためのデータの準備が整いました。
ユーザとスキーマは作らなくてもmybatis-generatorが動くことは動くのですが、自動生成の対象スキーマやテーブルを絞らない場合information_schema、pg_catalogのカタログオブジェクトやテーブルも全て取得してしまいます。
昔は「postgresql.conf」のlisten_addressesのデフォルト値は'localhost'だったのですが、 今見るとデフォルトで全てのIPアドレスをlistenするようになっていますね。
postgresqlの設定値はバージョンによって細かい違いが出てきているようです。
0 件のコメント:
コメントを投稿