アプリ開発ときどきアウトドア

主にJavaを使ったアプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング 設計技術

DB操作フレームワーク はJPA or mybatis?

投稿日:2018年5月20日 更新日:

開発に向けた準備で、開発標準を準備するフレームワーク(FW)チーム、それらを使って実装を行う業務チームが集まって、「DB操作を行うためのFWは何を使うか?」という協議になった。

FWチームは、FW・JavaEE7の標準であるJPAを推奨した。

FWチームの一員ではあるが業務寄りの立場でもある自分はmybatisを推奨した。業務チームからの強い要望で、mybatisを採用する方向で決定した。

  • 分かりやすさ、関心の分離
    JPAはオブジェクト指向プログラムベースでDB操作を完結したい(ORマッパーの目標)ので、結果としてプログラム上にSQL文に相当するDB操作の実装がされる。単純なDB操作であれば美しいと思うが…
    難易度の高い業務システムでは、多数のテーブル結合や副問い合わせを混在させたような複雑なクエリを実装する必要がある。プログラム/JPQL/SQLが混在したソースコードを作るのも大変だし、それをレビューするのも大変である。やはりSQL文だけに集中したい…
    mybatisは外出しのファイルにSQL文を定義できるので、このような問題を軽減できる。
    JPAでもネイティブクエリ(とちょっとの改修)を使えば、外出しのファイルに定義できますよ、とのことだが、だったらmybatisの方が機能が充実しているので、mybatisを選んだ方が素直かと…
  • 学習や開発コスト
    JPA(JPQL)は、SQL文ライクな問い合わせ言語であるが、SQL文ではない。SQL文の感覚でJPQLを定義して実行するとエラーになる場合がある。問題が発生した場合、JPQLの問題なのかSQL文の問題なのかの切り分けが必要となり、難易度が上がる。JPQLでSQL文の全てを表現できるわけではないので、その辺の制約を把握していないと、実行時のエラー原因の特定が難しい。
    FWチームとしては、プロジェクトに投入されるメンバ(パートナー)はJavaEE6or7を分かっている人が投入されると思うので、そんなに問題ないのでは?と。ん~実態はそうではないと思います…ちょっとJava開発やったら「経験者」として営業提案されて入ってくる人も多いのではないかなぁ、なんて思います…自分もJPQLで苦労したので…
  • ORマッパーの考えを否定するわけではありませんが、私の経験や視界にある日本の業務システムは、複雑怪奇であり、ORマッパーは適さないのかなぁ、なんて思います。FWチームは優秀な人が多いのかもしれませんが、その案件のために急遽集められた業務チームのメンバには難しいんじゃないかと思います…
  • 今のFWにあるJPAの機能を使わず、なぜ追加開発でmybatisを使うのか?というコスト的な指摘もありました。全般的に優秀な人ほど、mybatisの採用に否定的でした…あはは…
    直近で考えるならJPAの方が準備が充実しておりコストがかかりません。だがしかし、上記の通り、良くも悪くも寄せ集め業務チーム(20人程)が自分と同じように苦労するよりも、今自分が苦労してmybatisを使えるようにした方が、みんなの負担が削減され、後の品質が良くなるはず!と信じています。

 







-1. システムエンジニアリング, 設計技術

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

リモートからのwarデプロイの自動化

JavaEEベースのツールを公開しているが、デプロイの都度、warファイルをサーバにコピーしてwildflyにデプロイするのが面倒なので、mavenで自動化しました。 前提 mavenのプラグインと後 …

wildflyへのwarデプロイの自動化

更新したWebアプリをWildflyにデプロイするのが面倒なのでスクリプトを作成してみました。 前提 実行環境はCentOS Linux 7です。 JavaEEのWebアプリの配布形式であるwarファ …

SLF4Jの仕組みと使用方法

何気に使用しているSLF4Jの仕様やその仕組みを整理したいと思います。 前提 元ネタは次のSLF4J Manualサイトです。  www.slf4j.org  1 sha …

DOSバッチリファレンス

ちょっとした事でbatファイルを作成することが多い。 そのたびにネット検索するのが非効率なため、リファレンス化しようと思う。 そういう目的なので、自分がよく調べる項目に絞っている。 開発時の注意点 直 …

grid

Excelで月初日、第1週日、第2週日を算出する

プロジェクト管理で毎年、毎月のタスクを管理するために、この辺の操作を行うためのExcel関数を調べたので記載しておきます。 Excelの関数式 ここでは、基本的に5営業日単位で管理したいことと、最初の …



プロフィール ゆっきーです。
都内でシステムエンジニアをやっています。
もっと詳細を見る