1. 程式人生 > >Mybatis與Hibernate區別

Mybatis與Hibernate區別

相同點

  1. Hibernate與MyBatis都是通過SessionFactoryBuider由XML配置檔案生成SessionFactory,由SessionFactory 生成Session,由Session來開啟執行事務和SQL(Structured Query Language,結構化查詢語言)語句。
  2. Hibernate和MyBatis都支援JDBC(Java DataBase Connectivity,java資料庫連線)和JTA(Java Transaction API,Java事務API(Application Programming Interface,應用程式程式設計介面))事務處理。
  3. 基於ORM(Object Relational Mapping, 物件關係對映)思想解決了entity和資料庫的對映問題

不同點

hibernate:是一個標準的ORM框架(物件關係對映)。入門門檻較高,不需要寫sql,sql語句自動生成,對sql語句進行優化、修改比較困難。

應用場景:適用需求變化不多的中小型專案,比如:後臺管理系統,erp,orm,oa等

mybatis:專注sql本身,需要程式設計師自己編寫sql語句,sql修改、優化比較方便。mybatis是一個不完全的ORM框架,雖然程式設計師自己寫sql,mybatis也可以實現對映(輸入對映,輸出對映)

應用場景:適用需求變化較多的專案,比如:網際網路專案。

編寫hibernate.cfg.xml配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
       <!-- property 元素用於配置Hibernate中的屬性 鍵:值-->
       <!-- hibernate.connection.driver_class : 連線資料庫的驅動  -->
       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

       <!-- hibernate.connection.username : 連線資料庫的使用者名稱 -->
       <property name="hibernate.connection.username">root</property>
       <!-- hibernate.connection.password : 連線資料庫的密碼 -->
       <property name="hibernate.connection.password">123</property>
       <!-- hibernate.connection.url : 連線資料庫的地址,路徑 -->
       <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property>

        <!--配置JDBC內建連線池-->
        <property name="connection.pool_size">1</property>

        <!-- show_sql: 操作資料庫時,會 向控制檯列印sql語句 -->
        <property name="show_sql">true</property>

        <!-- format_sql: 列印sql語句前,會將sql語句先格式化  -->
        <property name="format_sql">true</property>

        <property name="hbm2ddl.auto">update</property>

        <!-- 資料庫方言配置 org.hibernate.dialect.MySQLDialect (選擇最短的)-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>


        <!-- hibernate.connection.autocommit: 事務自動提交  -->
        <property name="hibernate.connection.autocommit">true</property>

        <!-- 將Session與執行緒繫結=> 只有配置了該配置,才能使用getCurrentSession -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- 引入ORM 對映檔案 填寫src之後的路徑-->
        <mapping resource="com/itheima/a_hello/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>