1. 程式人生 > >Hibernate 入門

Hibernate 入門

1. 什麼是hibernate
hibernate 是一個ORM框架/持久層框架,全稱Object_Relative DateBase-Mapping;
優勢:跨資料庫的無縫移植

2. 如何在專案中新增hibernate支援(手動新增)

  1. 新增hibernate相關依賴2.1 新增hibernate相關依賴
  2. 在resource目錄下新增hibernate.cfg.xml(核心配置檔案)
  3. 新增DTD支援
  4. 新增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&amp;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>

	
  1. 在開發階段再建立實體類和實體對映檔案(*.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>

  1. 使用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();
       
	}

}