SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 30 day free trial to unlock unlimited reading.
16.
#ccc_a1
SpringのJdbcTemplate
List<Book> books = jdbcTemplate.query(
“SELECT ISBN, TITLE FROM BOOKS”
+ “ WHERE ISBN = ? ”,
new Object[]{“hoge”}, // “?”のところに入れたい引数
new BeanPropertyRowMapper(Book.class)
);
16
17.
#ccc_a1
MyBatis
<!-- xmlファイル -->
<select id="selectBook" parameterType=”String”
resultType="Book">
<![CDATA[
SELECT ISBN, TITLE FROM BOOKS
WHERE ISBN = #{isbn}
]]></select>
// Javaコード
List<Book> books = bookRepository.select(“hoge”);
17
21.
#ccc_a1
うたぐり深い人へ、本当の話。
1. jOOQはもっと複雑なSQLを組み立てることも可能です。
a. 参考文献
https://docs.google.com/presentation/d/1MvsMo38Bt-2h4b_ZDSSXNSgq_UuweXx9P0HmlbO
y8k8
2. 正直に言うと、DBFluteは group by をサポートしていません。
a. そういうことは「外出しSQL」で書く方向。
b. 外出しSQLの結果マッピングや呼び出しコードの自動生成をサポート。
21
割愛
37.
#ccc_a1 37
A. 手書きのDDL(を積んでゆくだけ)
最初にCREATE TABLE、 運用しながら ALTER,
CREATE/DROP INDEX, CREATE/DROP TABLE...
B. ER図をまず書く。(そこからDDL文を自動生成)
C. JPAのエンティティクラスを手書きし、Hibernate-JPAでDDL文
を自動生成
D. テーブル定義書.xlsと手書きのDDLを同時に書き続ける
56.
#ccc_a1
他の方法
56
A. RDBMSのcsv, tsvのバルクロード機能
a. 日付の相対指定が難しい
B. INSERT文を用意して実行
a. 大量の手書きINSERT文が今後のDB変更に耐えられるか?
C. 上記A,Bのハイブリッド
a. csvで入れて相対日付カラムはUPDATE文
D. FlywayのJava-Based Migration
a. DB定義変更用PJとは別PJとしてテスデータ用PJを作っておく
b. SQL文ではなくJavaコードを作っておく
c. INSERT文よりは楽。日付の相対指定も可能。