Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

8.480 visualizaciones

Publicado el

https://jjug.doorkeeper.jp/events/63161

Publicado en: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

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

  1. 1. MyBatis を利利⽤用した Web Application 開発についてのご 紹介 LINE Corp. Service Dev. 1 Tokuhiro Matsuno
  2. 2. ⾃自⼰己紹介 • LINE Corp Service Dev.1 • ⾼高トラフィックの B2C の⾃自社ウェブサービスを開発する ことを⽣生業としている • 最近はなぜか広告事業をやっています。 • 広告案件でももちろん MyBatis を利利⽤用しています。
  3. 3. MyBatis? • 永続化フレームワーク for Java
  4. 4. どう動く? • SQL は直接書く • それを interface 通じて呼び出す → java.lang.reflect.Proxy で処理理する • 結果を Bean に Mapping する
  5. 5. どんなスキーマでも使える • 主キーがなくても⼤大丈夫 • もともと MyBatis 前提で設計されてない DB でも⼤大丈夫 • サブクエリなどの複雑なクエリも簡単に使えます • 複雑なクエリそのものが⼤大変
  6. 6. 完全に DB 製品に依 存します
  7. 7. 発⾏行行されるクエリが⼈人間 に読みやすいので便便利利
  8. 8. N+1 問題がそもそも起きない (⼿手で書いているので)
  9. 9. 3つの書き⽅方 • Mapper XML: XML で記述 • Annotation: アノテーションで記述 • Statement builder: Java DSL で記述
  10. 10. 1. Mapper XML
  11. 11. 名前はビーンのフィールド名または -parameters または @Param から取得
  12. 12. Java8 以後は -parameters オプションで不不要
  13. 13. Usage String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  14. 14. 実⾏行行 try (SqlSession session = sqlSessionFactory.openSession()) { BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.findById(101); System.out.println(blog); }
  15. 15. 2. Annotation
  16. 16. クエリ埋め込んだら読みづらい?
  17. 17. 3. Statement builder
  18. 18. LINE 社内での利利⽤用⽐比率 27% 73% XML Annotation Statement builder
  19. 19. @Select("SELECT *" + " FROM blog" + " id=#{id}") Blog findById(long id);
  20. 20. Annotation の⾔言語別シェア 1% 4% 95% Java Kotlin Groovy
  21. 21. Kotlin fun findById(id: Long): List<Blog> Groovy Blog findById(long id) Java Blog findById(long id);
  22. 22. LINE社社内での直近動向 • Mapper XML → 継続して利利⽤用されている • Annotation → Groovy or kotlin の利利⽤用が活発 • 複数⾏行行⽂文字列列に対応している • Statement builder → ほとんど利利⽤用されていない
  23. 23. Spring support • Spring boot のサポートが⼿手厚いです 😁
  24. 24. MyBatis の利利点 • SQL が直接書いてある → 短期的に開発効率がすごくいいわけではない → コードレビューが容易易 → スロークエリのリカバリが容易易
  25. 25. MyBatis の利利点(2) • ドキュメントが充実している
  26. 26. MyBatis の利利点(3)
  27. 27. MyBatis の利利点(4) • コードがシンプル • 挙動がわかりにくい点があっても、Debugger で追いやす い
  28. 28. MyBatis の⽋欠点 • XML, Statement builder, Annotation をサポート → Annotation で書く⼈人にとっては XML 記法前提で説明が 書かれていて、ドキュメントがちょっと読みにくい

×