Mybatis與Hibernate區別
阿新 • • 發佈:2019-02-17
相同點
- Hibernate與MyBatis都是通過SessionFactoryBuider由XML配置檔案生成SessionFactory,由SessionFactory 生成Session,由Session來開啟執行事務和SQL(Structured Query Language,結構化查詢語言)語句。
- Hibernate和MyBatis都支援JDBC(Java DataBase Connectivity,java資料庫連線)和JTA(Java Transaction API,Java事務API(Application Programming Interface,應用程式程式設計介面))事務處理。
- 基於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>