HibernateとMyBatisを比較

    「Hibernate」と「MyBatis」の概要

    「Hibernate」と「MyBatis」は、オープンソースのオブジェクトリレーショナルマッピング(ORM)ツールです。

    ■「Hibernate」とは

    Hibernate(ハイバネート)とは、JavaプログラミングのためのO/Rマッピング(オブジェクト関係マッピング)ライブラリです。

    XML形式のマッピングファイルに「オブジェクトの各項目」と「対応するレコード項目の定義」を記述することにより一元管理が可能となり、オブジェクトの呼び出しや保存を行うための雛型となるコードを自動生成します。

    「類似コードを大量に書く煩雑作業から解放される」「全体のコード記述量削減」「コードのシンプル化」などのメリットにより、開発生産性が向上します。

    ■「MyBatis」とは

    MyBatis(マイバティス)とは、JavaのDBアクセス用O/Rマッピングツールです。

    「オブジェクト指向言語におけるオブジェクト」と「データベースに関する処理」を対応づけてソフトウェア開発の生産性を効率化できます。

    「XML記述子(XMLディスクリプタ)」または「注釈(アノテーション)」を使用して、「オブジェクト」を「カスタムSQL」「ストアドプロシージャ」「SQLステートメント」とシンプルに結合(マッピング)できます。

    主な特徴比較

    ■Hibernate

    ・オブジェクトモデル駆動開発
    ・SQL自動生成
    ・結果セットまたはデータ処理にJDBC APIは不要

    ■MyBatis

    ・リレーショナルデータモデル駆動
    ・既存の複雑なスキーマを操作する必要がある
    ・複雑なクエリに対応できる
    ・ストアドプロシージャ呼び出し機能
    ・レポートモジュールを実現できる

    学習容易性比較

    ■Hibernate

    Hibernateを使いこなすための学習しきい値は高めの傾向があります。

    「O/Rマッピング設計方法」「パフォーマンスとオブジェクトモデルのバランス調整」などの習得が必要となります。

    ■MyBatis

    MyBatisは簡単に習得できます。

    SQLをマスターしている開発者に対して、データベースクエリ自動オブジェクトバインド機能を提供します。

    クエリ言語比較

    ■Hibernate

    Hibernateは、SQLライクなクエリ言語「HQL(Hibernate Query Language)」を使用します。

    HQLは完全にオブジェクト指向であり「継承」「ポリモーフィズム」「関連付け」などの機能を活用できます。

    ■MyBatis

    データベース依存のSQLを使用します。

     

    参考元サイト
    https://www.tutorialspoint.com/mybatis/mybatis_hibernate.htm
    http://ashish-chauhan-3.blogspot.com/2017/
    http://edsellandicho.com/tutorials/index.php/java-framework/21-hibernate-vs-mybatis
    https://topic.alibabacloud.com/a/the-difference-between-hibernate-and-mybatisibatis-why-choose-go_1_11_30556254.html

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

    基本情報

    概要

    Hibernate(ハイバネート)とは、JavaプログラミングのためのO/Rマッピング(オブジェクト関係マッピング)ライブラリです。

    【O/Rマッピング(Object/Relational Mapping)とは】
    「オブジェクト指向のドメインモデル」と「リレーショナルデータベース」をマッピングするためのフレームワークを提供する機能のことです。
    このような機能が必要となる原因として、「オブジェクト指向言語」と「リレーショナルデータベース」の思想の違いがあります。「オブジェクト指向」では、現実世界にあるモノに即した形でデータモデルを設計します。一方、 「リレーショナルデータベース」では、正規化を基本として、登録処理や検索処理などを最適化することを目的としてデータモデルが設計されます。
    このような基本的な思想の違いから、オブジェクト指向言語であるJavaから、リレーショナルデータベースにアクセスして処理するためのコードを書く場合、「大量の煩雑なコードを記述しないと処理を実現できない」、「同じことを何度も何度も書かなければならない」という問題が発生しがちになります。
    「インピーダンス・ミスマッチ」と呼ばれる、このような問題を少しでも解消するために、O/Rマッピングライブラリ(O/Rマッパー)が開発されました。

    【O/RマッパーであるHibernateを使用することのメリット】
    XML形式のマッピングファイルに、オブジェクトの各項目と、対応するレコード項目の定義を記述すると、オブジェクトの呼び出しや保存を行うための雛型となるコードを自動生成してくれます。
    Hibernateのマッピングファイルによって、オブジェクトとリレーショナルデータベース上のテーブルおよびレコードを関連付けて一元管理することができます。煩雑な同じようなコードを大量に書く作業から開放され、全体のコード記述量が削減されて、コードもシンプルになり、生産性が上がります。
    また、「オブジェクト指向」と「リレーショナルデータベース」の2つの間に、Hibernateマッピングファイルという抽象モデルが存在することによって、データベース側のスキーマ変更を吸収することができるため、プログラムソース側への影響を最小限にすることができます。

    TOPに戻る

    主な特徴

    【Javaベース】
    Hibernateは、Javaオブジェクトをベースにした言語でシンプル設計になっています。Javaエンジニアなら、それほどの習得時間をかけずに、使いはじめることができるため、導入コストを節減できます。

    【HQL】
    Hibernateは、SQLライクな「HQL(Hibernate Query Language)」というクエリ言語を提供しています。オブジェクトをベースとしたクエリを構築できます。

    【JavaEEアプリケーションに対応】
    スタンドアローンのJavaアプリケーションへの対応のほか、JavaServletやEJBセッションビーンを使用しているJavaEEアプリケーションにも対応しています。

    【各種データベースに対応】
    特定のデータベースには依存せず、さまざまなデータベースに対応しています。

    TOPに戻る

    同様製品(概要情報)

    O/Rマッパー製品は、「MyBatis」など、Java用、PHP用、Ruby用、Android用など、各言語ごとに多数存在しています。

    TOPに戻る

    導入事例

    Hibernateは、効率的なJavaシステム開発をサポートするO/Rマッパーとして、さまざまな領域で幅広く利用されています。

    TOPに戻る

    ライセンス情報

    LICENCEHibernateのライセンスは、「GNU Lesser General Public License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

    TOPに戻る

    ダウンロード

    ダウンロードページ

    TOPに戻る

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。


    「MyBatis」基本情報

    ■概要

    MyBatis(マイバティス)とは、JavaのDBアクセス用OSSライブラリでO/Rマッピングツールです。

    ■基本説明

    MyBatisは、「オブジェクト指向言語におけるオブジェクト」と「データベースに関する処理」を対応づけてソフトウェア開発の生産性を効率化するためのツールです。

    XML記述子(XMLディスクリプタ)または注釈(アノテーション)を使用して、「オブジェクト」を「カスタムSQL」「ストアドプロシージャ」「SQLステートメント」とシンプルに結合(マッピング)できます。

    MyBatis SQLマッパーフレームワークにより、オブジェクト指向アプリケーション開発において、リレーショナルデータベースに関する処理を容易化できます。

    ■主要開発元

    MyBatisは、MyBatis Teamを中心として開発が進められています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →MyBatis

    ライセンス情報

    MyBatisのライセンスは「Apache License Version 2.0」です。

    詳細について、こちらを参照ください。
    →GitHub →mybatis/mybatis-3 →LICENSE

    ダウンロード

    →GitHub →mybatis/mybatis-3 →Releases

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Hibernate」「Reladomo」など。