Hibernate 入門
阿新 • • 發佈:2018-11-03
1. 什麼是hibernate
hibernate 是一個ORM框架/持久層框架,全稱Object_Relative DateBase-Mapping;
優勢:跨資料庫的無縫移植
2. 如何在專案中新增hibernate支援(手動新增)
- 新增hibernate相關依賴2.1 新增hibernate相關依賴
- 在resource目錄下新增hibernate.cfg.xml(核心配置檔案)
- 新增DTD支援
- 新增Hibernate的配置
4.1 資料庫相關url|connection.d(connection.username|connection.password|connection.river_class|dialect)
4.2 除錯相關(show_sql|format_sql)
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> <!-- 1. 資料庫相關 (資料庫連線資訊)--> <property name="connection.username">root</property> <property name="connection.password">123</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 配置本地事務(No CurrentSessionContext configured!) --> <property name="hibernate.current_session_context_class">thread</property> <!-- 2. 除錯相關 (專案開發除錯所用)--> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 3. 新增實體對映檔案 (hibernate所管理的實體類對映檔案)--> <mapping resource="com/hibernate/entity/User.hbm.xml"/> </session-factory> </hibernate-configuration>
- 在開發階段再建立實體類和實體對映檔案(*.hbm.xml)
實體必須實現Serializable介面
實體對映檔案:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- table對應著實體類所對應的表 name指全類名 --> <class table="t_hibernate_user" name="com.zking.one.entity.User"> <!-- name指類屬性 type指類屬性型別 column指資料庫表字段 --> <id name="id" type="java.lang.Integer" column="id"> <!-- class指表的主鍵對應生成的類,class="increment"設定主鍵自增 --> <generator class="increment"></generator> </id> <property name="userName" type="java.lang.String" column="user_name"></property> <property name="userPwd" type="java.lang.String" column="user_pwd"></property> </class> </hibernate-mapping>
- 使用hibernate實現 CRUD 操作
1.讀取配置
2.建立SessionFactory(建模獲取sessionfactory)
3.開啟Session
4.開啟事務
5.執行資料庫操作
6.提交事務/回滾事務
7.關閉Session
例項:
package com.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.hibernate.entity.User;
public class Date1 {
public static void main(String[] args) {
// 1.讀取配置
Configuration cfg=new Configuration().configure("/hibernate.cfg.xml");
// 2.建立SessionFactory(建模獲取sessionfactory)
SessionFactory sessionFactory = cfg.buildSessionFactory();
// 3.開啟Session
Session session = sessionFactory.openSession();
// 4.開啟事務
Transaction transaction = session.beginTransaction();
User user=new User();
// 5.執行資料庫操作
//增加
// user.setUserName("中意");
// user.setUserPwd("454");
// session.save(user);
//修改
// user.setId(1);
// user.setUserName("效果");
// user.setUserPwd("124");
// session.update(user);
//
//查詢
user.setId(3);
User user2 = session.get(User.class, user.getId());
user2.setUserName("Uzi");
System.out.println(user2);
//刪除
// user.setId(2);
// session.delete(user);
// 6.提交事務
transaction.commit();
//7.關閉Session
session.close();
}
}