はまった:外部プロジェクトの.jarと作成中のプロジェクトが指すSqlSessionが異なるとき
内容
batchのプロジェクトを実行したら、トランザクションエラーになった。
sorekara doshitano...
どちらかを親として、bean idが違えど、実態は同じsqlSessionにする。
■launch-context.xml
<!-- 実行するプロジェクトのsqlSession --> <bean id="sqlSessionBatch" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> <constructor-arg index="1" value="BATCH" /> </bean> <!-- 外部参照jarファイルのsqlSession --> <bean id="sqlSession" parent="sqlSessionBatch" />
はじめて:モックってなによ?
内容
モックは、@Mockで済ませるのは楽だけど、
可読性が低くなりやすいと思う。
モッククラスをつくってあげると、
junit書きやすいし、他人から見て、なにを返しているのか
分かりやすいと思いました。(素人目線から。。。)
モッククラスをつくれ、といわれたとき、
なに書きゃいいの??状態で、難しく思っていました。
でも、よくよく参考のモッククラスを読んでみると、
「このモッククラス動いたよ!!」って、ログ吐いてやってる
だけなんですね。
さらには、例外出したいテストデータの値をハードコーディングで
if文で比較してやって、例外に導いてやっているんですね。
意外と簡単だぁ!!って思ったよ!!
ただ、まだワテクシは、
java基礎ちゃんと身に沁みついてないから、
お手本がないと書けないんですね。。。
勉強します。。。
要因
junitでテストコードを書くとき、いままでモックは、
@Mockで済ましてたんだけど、
便利だなーでも、よくわかってないから
ハマりやすかったのです。
やっちまった:UPDの主キー被り
内容
SQLのINSERT文、UPDATE文にて、登録(変更)するカラムの項目に
WHERE句で指定している主キーを書いている。
同じこと書いてもいいが、無駄である。
-- psqlのはなしです -- NG!! UPDATE table1 t1 SET colunm1 = t2.colunm1 -- 主キー ,colunm2 = t2.colunm2 -- 主キー ,colunm3 = t2.colunm3 FROM table2 t2 WHERE t1.colunm1 = t2.colunm1 AND t1.colunm2 = t2.colunm2; -- OK!! UPDATE table1 t1 SET colunm3 = t2.colunm3 FROM table2 t2 WHERE t1.colunm = t2.colunm1 AND t1.colunm2 = t2.colunm2;
要因
SQLの基礎がわかってない。