ハンズオンニュース

Lasta Di に変更

ハンズオン環境で利用しているDIコンテナが、Seasar から Lasta Di に変わりました。(Java8以降)

  1. pom.xmlを修正、Seasar関連のものを削除して、Lasta Diを追加
  2. maven-eclipse.bat|sh を叩く
  3. UnitContainerTestCase の import 文を編成 (seasar 部分を lastadi に)
  4. src/test/resources のファイルをすべて削除、.gitkeep (空のテキストファイル) だけ配置
  5. src/main/resources に、app.xml, jdbc.xml, lasta_di.properties, logback.xml を追加
  6. basicInfoMap.dfprop 似て、targetContainer を lasta_di にして、再自動生成

pom.xmlは、以下をコピーして、該当箇所に設定しましょう。

e.g. pom.xmlのproperties @pom.xml
	<properties>
		<lasta.di.version>0.7.0</lasta.di.version>
		...
	</properties>

dependenciesは、もうまるごと差し替え。

e.g. pom.xmlのdependencies @pom.xml
	<dependencies>
		<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
		<!--                                                                Main Framework -->
		<!--                                                                 = = = = = = = -->
		<!-- dbflute -->
		<dependency>
			<groupId>org.dbflute</groupId>
			<artifactId>dbflute-runtime</artifactId>
			<version>${dbflute.version}</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.jdbc.version}</version>
			<scope>runtime</scope>
		</dependency>

		<!-- lasta di -->
		<dependency>
			<groupId>org.lastaflute</groupId>
			<artifactId>lasta-di</artifactId>
			<version>${lasta.di.version}</version>
		</dependency>

		<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
		<!--                                                               Partner Library -->
		<!--                                                               = = = = = = = = -->
		<!-- transaction -->
		<dependency>
			<groupId>javax.transaction</groupId>
			<artifactId>javax.transaction-api</artifactId>
			<version>1.2</version>
			<scope>provided</scope>
		</dependency>

		<!-- logging -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.3</version>
		</dependency>

		<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
		<!--                                                                       Testing -->
		<!--                                                                       = = = = -->
		<!-- unit test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.2</version> <!-- is latest version without hamcrest -->
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.dbflute.utflute</groupId>
			<artifactId>utflute-lasta-di</artifactId>
			<version>${utflute.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

src/main/resources は、用意されています。

org.docksidestageに変更

エクササイズのクラスを配置するパッケージが org.dbflute から org.docksidestage に変更されました。(おるぐ、どっくさいどすてーじ)

org.dbfluteだと、DBFluteランタイムのパッケージとアプリを想定したパッケージが同じになり、 参考実装として紛らわしくなってしまうため、アプリを想定したパッケージをまったく別のパッケージにすることにしました。

すでに org.dbflute でハンズオンしている方は、別にそのままで構いません。

docksidestageに移行するなら

もし、移行される場合は、以下の修正をします。

basicInfoMap.dfprop
packageBase を org.docksidestage.handson.dbflute に修正
log4j.properties
Logger設定に org.docksidestage を追加
convention.dicon
rootパッケージを org.docksidestage.handson に修正
Javaパッケージ
一斉に、org.docksidestage に変更 ※リファクタリング機能を使って

そして、manage.bat|sh の renewal (1) を実行してすべて自動生成し直し。

データベースの名前も maihamadb に

また、データベースの名前が、exampledb から maihamadb に変わっています。もし、移行される場合は、以下を修正します。

databaseInfoMap.dfprop
urlのDB名をmaihamadb、userとpasswordをmaihamadb
jdbc.dicon
urlのDB名をmaihamadb、userとpasswordをmaihamadb
build.properties
exampledb を maihamadb に
maven-eclipse.bat|sh
exampledb を maihamadb に
DBFluteクライアント
dbflute_exampledbディレクトリを を dbflute_maihamadb に

そして、manage.bat|sh の replace-schema (0) を実行し、テストケースも実行。

JavaEditorTemplatesを更新

(2014/09/21)

セクション1で設定した JavaEditorTemplates が更新されました。

以下の、JavaEditorTemplatesの設定ファイルをダウンロードし、import し直してください。 すべての template を選択して Remove して空っぽにしてから差し替えます(でないと二重に登録されてしまう)

java-editor-templates.xml
Java8の文法で便利な補完が用意されています。

セクション4にエクササイズを追加

(2014/06/06)

区分値メソッドを使って実装に追加

セクション4の "区分値メソッドを使って実装" の部分にエクササイズを追加しました。

追加されたエクササイズ
銀行振込で購入を支払ったことのある、会員ステータスごとに一番若い会員を検索

購入支払テーブルを利用

購入支払テーブルを利用するので、以前のニュースで流れた PURCHASE_PAYMENT の追加が必要です。

会員フォローイングと会員支払の調整

セクション10が終わっている人

会員フォローイングのデータをしっかり用意しました。 セクション10の会員フォローイングのデータをコピーしてエクセルの MEMBER_FOLLOWING シートのデータを上書き貼付けして ReplaceSchema してください。

セクション11のオンパレードは続くが終わってる人

"手渡しだけでも払い過ぎてるのに未払い..." みたいな条件が追加されています。

MySQLスクリプトを改良

(2014/06/02)

MySQL用の起動バッチやログインシェルなどを改良しました。ファイルの中身を以下の内容で置き換えてください。

Windowsの場合、Eclipse 上では "右クリック - Open With - Text Editor" で開いて修正します。ただし、その後ダブルクリックしても Text Editor が開いてしまいますので、同じように右クリックから Default Editor で開き直します(実行し直します)。

起動スクリプト

起動スクリプトはこちら

e.g. boot-mysql.bat @WindowsScript
%~d0
cd %~p0

start /b cmd /c .\mysql\bin\mysqld --defaults-file=.\my.cnf -nt
e.g. boot-mysql.sh @Shell
#!/bin/bash

cd `dirname $0`

./mysql/bin/mysqld --defaults-file=./my.cnf

シャットダウンスクリプト

シャットダウンスクリプト (close-mysql.sh (Macの方) は特に何も変わりません。)

e.g. close-mysql.bat @WindowsScript
%~d0
cd %~p0

.\mysql\bin\mysqladmin --defaults-file=.\my.cnf -u root shutdown

pause

ログインスクリプト

ログインスクリプトはこちら

e.g. login-mysql-root.bat @WindowsScript
%~d0
cd %~p0

.\mysql\bin\mysql --defaults-file=.\my.cnf --user=root --default-character-set=sjis

pause
e.g. login-mysql-root.sh @Shell
#!/bin/bash

cd `dirname $0`

./mysql/bin/mysql --defaults-file=./my.cnf --user=root --default-character-set=utf8

そして、my.ini は利用されなくなりました。WindowsでもMacでも my.cnf が利用されますので、my.ini は削除しても構いません。

PURCHASE_PAYMENT を追加

(2014/06/01)

PURCHASEのone-to-manyの子テーブルとして、PURCHASE_PAYMENTを追加しました。 これにて、会員から子テーブルの子テーブルを表現することができるようになり、さらなる難しい問題を作ることができるようになりました。

まだ、セクション3までの人

以下の DDL とエクセルデータを、お手持ちのものと差し替えてください。

playsql-createschema-ddl-1st.zip
ReplaceSchemaで流すDDL (replace-schema-10-basic.sqlなど)
playsql-loaddata-ut.zip
ReplaceSchemaで登録するテストデータ (30-product.xlsなど)

したら、ctrl + shift + R の manage で、1番の renewal タスクを実行してください。

セクション4が終わってて、セクション10はまだの人

セクション3までの人の zip で DDL やエクセルを差し替えるのは同じです。

セクション4の区分値の定義に、区分値が追加されているので追加してください。 新しい区分値である PaymentMethod を追加、そして、PAYMENT_METHOD_CODE に関連付けます。

セクション8の、排他制御なしの削除のエクササイズが少し変わっています。 そのままだと (当然のことながら) 購入削除でFK制約違反になってしまいますので、頑張って削除してみましょう

セクション10が終わっている人

DB変更が終わっているので、セクション3までの人の zip の内容を差分で反映してください。

replace-schema-10-basic.sql
PURCHASE_PAYMENT の create 文を追加
replace-schema-10-basic.sql
PURCHASE_PAYMENT のインデックスを追加
20-member.xls の MEMBER
会員名称 Og2000 を "アカギ" に、アカウントを "Akagi" に
30-product.xls の PURCHASE
ストイコビッチさんのデータが増えているのでコピー
30-product.xls に新しいシート
PURCHASE_PAYMENT のシートをそのままコピー

また、セクション4の区分値の PaymentMethod を追加&関連付けしてください。

セクション11の "オンパレードの第一歩" で購入支払の仕様が増えていますのでチャレンジを!