狠狠撸

狠狠撸Share a Scribd company logo
MyBatis を利利?用した Web
Application 開発についてのご
紹介
LINE Corp. Service Dev. 1

Tokuhiro Matsuno
?自?己紹介
? LINE Corp Service Dev.1

? ?高トラフィックの B2C の?自社ウェブサービスを開発する
ことを?生業としている

? 最近はなぜか広告事業をやっています。

? 広告案件でももちろん MyBatis を利利?用しています。
MyBatis?
? 永続化フレームワーク for Java
どう動く?
? SQL は直接書く

? それを interface 通じて呼び出す

→ java.lang.re?ect.Proxy で処理理する

? 結果を Bean に Mapping する
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
どんなスキーマでも使える
? 主キーがなくても?大丈夫

? もともと MyBatis 前提で設計されてない DB でも?大丈夫

? サブクエリなどの複雑なクエリも簡単に使えます

? 複雑なクエリそのものが?大変
完全に DB 製品に依
存します
発?行行されるクエリが?人間
に読みやすいので便便利利
N+1 問題がそもそも起きない
(?手で書いているので)
3つの書き?方
? Mapper XML: XML で記述

? Annotation: アノテーションで記述

? Statement builder: Java DSL で記述
1. Mapper XML
名前はビーンのフィールド名または -parameters または @Param から取得
Java8 以後は -parameters オプションで不不要
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
Usage
String resource = "mybatis-con?g.xml";

InputStream inputStream =
Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory = new
SqlSessionFactoryBuilder().build(inputStream);
実?行行
try (SqlSession session = sqlSessionFactory.openSession())
{

BlogMapper mapper =
session.getMapper(BlogMapper.class);

Blog blog = mapper.?ndById(101);

System.out.println(blog);

}
2. Annotation
MyBatis を利用した web application 開発についてのこ?紹介
クエリ埋め込んだら読みづらい?
3. Statement builder
MyBatis を利用した web application 開発についてのこ?紹介
LINE 社内での利利?用?比率
27%
73%
XML Annotation
Statement builder
@Select("SELECT *"
+ " FROM blog"
+ " id=#{id}")
Blog findById(long id);
Annotation の?言語別シェア
1%
4%
95%
Java Kotlin Groovy
Kotlin
fun findById(id: Long): List<Blog>
Groovy
Blog findById(long id)
Java
Blog findById(long id);
LINE社社内での直近動向
? Mapper XML → 継続して利利?用されている

? Annotation → Groovy or kotlin の利利?用が活発

? 複数?行行?文字列列に対応している

? Statement builder → ほとんど利利?用されていない
Spring support
? Spring boot のサポートが?手厚いです ?
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis を利用した web application 開発についてのこ?紹介
MyBatis の利利点
? SQL が直接書いてある

→ 短期的に開発効率がすごくいいわけではない

→ コードレビューが容易易

→ スロークエリのリカバリが容易易
MyBatis の利利点(2)
? ドキュメントが充実している
MyBatis の利利点(3)
MyBatis の利利点(4)
? コードがシンプル

? 挙動がわかりにくい点があっても、Debugger で追いやす
い
MyBatis の?欠点
? XML, Statement builder, Annotation をサポート

→ Annotation で書く?人にとっては XML 記法前提で説明が
書かれていて、ドキュメントがちょっと読みにくい

More Related Content

MyBatis を利用した web application 開発についてのこ?紹介