インストール
インストーラを実行するとそのままサーバの起動までスタートします。
http://インストールサーバ:8091 へアクセスすると設定画面が開きます。
yum -y install postgresql postgresql-server postgresql-setup initdb
/var/lib/pgsql/data/postgresql.confの編集
#listen_addresses = 'localhost' # what IP address(es) to listen on; <=ローカルホストのみ、コメントアウト listen_addresses = '*' # what IP address(es) to listen on; <= コメントアウトを外して、全ホストからのアクセスを許可
[root@zeke ~]# systemctl start postgresql [root@zeke ~]# systemctl enable postgresql Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service. [root@zeke ~]# firewall-cmd --add-service=postgresql --permanent success [root@zeke ~]# firewall-cmd --reload success [root@zeke ~]# firewall-cmd --add-service=postgresql --permanent success [root@zeke ~]# firewall-cmd --reload success
デフォルトユーザ(postgres)のパスワード変更
[root@zeke ~]# su - postgres -bash-4.2$ psql -c "alter user postgres with password 'password'" ALTER ROLE
ユーザとDBの作成
-bash-4.2$ createuser user -bash-4.2$ createdb dbname -O user
種類 | クラス名パターン | 役割 | ジェネレータで生成するもの | 注意点 |
---|---|---|---|---|
エンティティ | テーブル名のキャメルケース | テーブル項目の内容を保持するためのbean | テーブル項目名に該当するフィールド、getter、setter | キー項目はKeyクラスに実装 |
キー | エンティティ+Key | テーブルのキー項目の内容を保持するためのbean | キー項目に該当するフィールド、getter、setter | エンティティの親クラス |
Example | エンティティ+Example | エンティティに対する条件などを保持する | 条件式の実装はサブクラスのCriteriaに設定する | |
Mapper | エンティティ+Mapper | SQL文とマッピングするためのインタフェース | update,insert,selectByExample,selectByPrimaryKey |
全項目列挙→契約エンティティ、契約異動履歴エンティティクラスのフィールドとgetter,setterに変更
SQLのSELECTをエイリアス.項目名 エイリアス_項目名 で列挙して、すべての項目に別名を作成 resultMapタグ内を以下のように設定 共通IDフィールドは各テーブルに持つ共通の項目となるもの エンティティのresultMapは外部参照ができるので 1対多の場合はcollectionタグを使う collectionにはofTypeにリスト要素の型を指定する
<mapper namespace="jp.example.exex.data.mapper.BindMapper" > <resultMap id="結合ResultMap" type="パッケージ.結合エンティティ" > <id property="共通IDフィールド1" column="共通IDカラム1"/> <association property="t1" columnPrefix="t1_" javaType="パッケージ.エンティティ1" resultMap="マッパー名1.リザルトマップ名"/> <association property="t2" columnPrefix="t2_" javaType="パッケージ.エンティティ2" resultMap="マッパー名2.リザルトマップ名"/> <collection property="t3" ofType="エンティティ3" columnPrefix="t3_" javaType="パッケージ.エンティティ3" resultMap="マッパー名3.リザルトマップ名"/> </resultMap> <sql id="t1Columns"> t1.共通IDカラム 共通IDカラム, t1.IDカラム1 t1_IDカラム1, t1.IDカラム2 t1_IDカラム2, t1.IDフィールド t1_フィールド, ... </sql> <sql id="t2Columns"> t2.IDカラム1 t2_IDカラム1, t2.IDカラム2 t2_IDカラム2, t2.IDカラム3 t2_IDカラム3, t2.IDフィールド t2_フィールド, ... </sql> <sql id="t3Columns"> t3.IDカラム1 t3_IDカラム1, t3.IDカラム2 t3_IDカラム2, t3.IDカラム3 t3_IDカラム3, t3.IDフィールド t3_フィールド, ... </sql> <select id="selectマッパーメソッド名" resultMap="結合ResultMap"> SELECT <include refid="t1Columns"/>, <include refid="t2Columns"/> FROM テーブル1 t1,テーブル2 t2 ... </select> :
public class BindEntity { /** 共通のIDカラムの型 */ private DataType id; /** T1テーブルエンティティオブジェクト */ private T1 t1; /** T2テーブルエンティティオブジェクト */ private T2 t2; /** T3エンティティのリスト */ private List<T3> t3List; // それぞれのgetter,setter }
resultMapは結合エンティティのリストへ設定 テーブル内容のマッピングはassociationのプロパティで設定したフィールド名とjavaTypeで指定した型でcolumnPrefixで指定したプレフィックスを持つ項目をエンティティオブジェクトへ挿入する
Spring Framework は、Javaプラットフォームに基づいたアプリケーションを作成しようとするJava開発者や組織が直面する課題に解決策を与える。Spring Framework は Java EE だけと結びついているわけではなく、広範囲なインテグレーションが可能であり、それが広く採用されている重要な理由でもある。 Spring Framework は従来的なプログラミングモデルを使わずに、効率的に複雑なアプリケーションを作成するのに必要な機能を提供する。また、Javaプラットフォームにおいても目新しい機能をいち早く取り入れることでも知られている。 Spring Framework は、一貫したモデルを提供し、そのモデルをJavaプラットフォーム上で作成される様々なアプリケーションに適用可能にするフレームワークである。 (Wikipediaから引用)
あるクラスが別のクラスをインスタンス変数に持つなどして利用している場合に、インスタンス変数の設定をクラス内で行うのではなく、外部から設定するという考え方。 Spring の場合は、その外部が Core モジュールである DI コンテナになる。
DIの考え方は、あるクラスが何かをするときにをクラスから生成せずに、クラスの実行を監視して実行時に依存するクラスのインスタンスを注入する方式です。
mavenやgladleとアノテーションでほぼできてしまうフレームワークです(中身や画面の構築は別で) アプリケーションはjarで構築され、アプリケーションサーバなしでWebアプリケーションを起動することができます Spring bootによるプログラムの作成手順
Spring batch
バッチの作成に特化したフレームワークです DB、ファイルへのアクセスパターンから設計し、作成していきます ただ、データをファイルに展開するのでいろいろと面倒な事が多い
ログ解析のためにElasticsearch+Logstash+Kibanaを動かすためのdocker-compose.ymlを作成
# elasticsearch elasticsearch: image: khiraiwa/docker-elasticsearch:1.0.0 volumes: - /data_elasticsearch:/data_elasticsearch ports: - "9200:9200" - "9300:9300" # kibana kibana: image: khiraiwa/docker-kibana:1.0.0 volumes: - /data_kibana:/data_kibana ports: - "5601:5601" links: - elasticsearch:docker-elasticsearch # logstash logstash: image: khiraiwa/docker-logstash:1.0.0 volumes: - /data_logstash:/data_logstash links: - elasticsearch:docker-elasticsearch environment: - AWS_ACCESS_KEY_ID=dummy - AWS_SECRET_ACCESS_KEY=dummy # tdagent tdagent: image: khiraiwa/docker-tdagent:1.0.0 volumes: - /data_tdagent:/etc/td-agent links: - elasticsearch:docker-elasticsearch environment: - AWS_ACCESS_KEY_ID=dummy - AWS_SECRET_ACCESS_KEY=dummy
docker-compose実行
docker-compose up -d
あとはダウンロード、インストール、実行が終わるまで待つ
/vm/virtualmachine/docker/elasticsearch$ docker-compose up -d Removing elasticsearch_elasticsearch_1... Recreating a59fac6833_elasticsearch_elasticsearch_1... Recreating elasticsearch_tdagent_1... Pulling logstash (khiraiwa/docker-logstash:1.0.0)... 1.0.0: Pulling from khiraiwa/docker-logstash 9943fffae777: Already exists fb15e825cb68: Already exists b9583a207297: Already exists a3ed95caeb02: Pull complete d911ec1fa7cf: Pull complete f0c854dd1717: Pull complete 5380778f135e: Pull complete aed5c72d060f: Pull complete 08090ea0c159: Pull complete f37ecc1c5d68: Pull complete ed8769fe50aa: Pull complete 73e14b87d475: Pull complete Digest: sha256:bd50c6e4f09063e4b349838974478f03bd0e39271d378bbf30036a6fd6b3ec90 Status: Downloaded newer image for khiraiwa/docker-logstash:1.0.0 Creating elasticsearch_logstash_1... Pulling kibana (khiraiwa/docker-kibana:1.0.0)... 1.0.0: Pulling from khiraiwa/docker-kibana 8387d9ff0016: Pull complete 3b52deaaf0ed: Pull complete 4bd501fad6de: Pull complete a3ed95caeb02: Pull complete 6779bbe01753: Pull complete 0c358e156fc0: Pull complete cd518798f0c1: Pull complete c8c155b2eacb: Pull complete 5d565163900c: Pull complete 47aab7a97a6f: Pull complete 1286cc3f4894: Pull complete Digest: sha256:b568bb2f3d3ecd1d94589f5db0bdc0fadf1968dd0570673ab9c8627110928a97 Status: Downloaded newer image for khiraiwa/docker-kibana:1.0.0 Creating elasticsearch_kibana_1...
実行後の動作確認 Elasticsearch
/vm/virtualmachine/docker/elasticsearch$ curl localhost:9200 { "name" : "Grim Reaper", "cluster_name" : "elasticsearch", "version" : { "number" : "2.0.0", "build_hash" : "de54438d6af8f9340d50c5c786151783ce7d6be5", "build_timestamp" : "2015-10-22T08:09:48Z", "build_snapshot" : false, "lucene_version" : "5.2.1" }, "tagline" : "You Know, for Search" }
Kibana
“http://localhost:5601"へブラウザでアクセスする