Hibernate 單框架搭建

Hibernate 單框架搭建 測試Demo


1: 創建java/web project項目

2: 導入jar包 hibernate-release-4.2.19.Final\lib\required 下所有的 jar包,還需要導入一個jar包 數據庫 的 驅動包(官網直接下載)

3:編寫hibernate的核心配置文件

Hibernate.cfg.xml 文件

<!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 name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://127.0.0.1:3306/hib</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>

		<!-- 配置數據庫方言  -->
	    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 是否顯示sql語句    -->
		<property name="show_sql">true</property>
	    <!-- 是否格式化語句   -->
	    <property name="format_sql">true</property>
		<!-- 自動創建表的類型  -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- 開啓二級緩存   -->
		<property name="hibernate.cache.use_second_level_cache">true</property>
	    <!-- 加載二級緩存  -->
	    <property name="hibernate.cache.region.factory_class">
            org.hibernate.cache.ehcache.EhCacheRegionFactory
        </property>

		<!-- 實體類的映射文件   -->
		<mapping resource="top/vkiss/hibernate/domain/Person.hbm.xml"/>
		<mapping resource="top/vkiss/hibernate/domain/Customer.hbm.xml"/>
		<mapping resource="top/vkiss/hibernate/domain/Order.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

4定義實體類(entity,pojo,domain,perudre)

public class Person {
	private Integer pid;
	private String pername;
	private String age;
	private String sex;
    <!-- 提供 getter / settter 方法 -->
	public Integer getPid() {
		return pid;
	}
	public void setPid(Integer pid) {
		this.pid = pid;
	}
	public String getPername() {
		return pername;
	}
	public void setPername(String pername) {
		this.pername = pername;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}

5 編寫實體類的配置文件(實體類名.hbm.xml) --對象關係映射文件

作用:描述類和數據庫中表之間的關係

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="top.vkiss.hibernate.domain">
	<class name="Person" table="t_Person">
        <!-- 主鍵配置 -->
		<id name="pid" column="pid" type="integer">
			<generator class="native"></generator>
		</id>
        <!-- 普通屬性 -->
		<property name="pername" column="pername" type="string" length="20"></property>
		<property name="age" column="age" type="string" length="3"></property>
		<property name="sex" column="sex" type="string" length="4"></property>
	</class>
</hibernate-mapping>

6 編寫hibernate代碼完成增刪改查的測試

1. 自定義封裝 hibernate 讀取配置文件的Utils 方法

package top.vkiss.hibernate.HibernateUtils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtils {
	private static SessionFactory sf;
	private static Session session;
	
	private HibernateUtils(){}
	
	static{
		Configuration cof=new Configuration();
		// 配置文件
		cof.configure();
		ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cof.getProperties()).buildServiceRegistry();
		//獲取到 session工廠對象 
		sf = cof.buildSessionFactory(serviceRegistry);
	}
 	public static Session opeSession() {
 		// 如果沒有, 或者已經關閉    -  根據工廠對象 獲取一個 session對象 
 		if (session==null || !session.isOpen()) {
 			session=sf.openSession();
		}
 		return session;
	}
 	<!-- 關閉Session -->
 	public static void closeSession() {
		if (session!=null && session.isOpen()) {
			session.close();
		}
	}
 	<!-- 關閉SessionFactory -->
 	public static void closeSessionFactory() {
 		if (sf!=null && !sf.isClosed()) {
 			sf.close();
 		}
 	}
	
	
}

編寫測試文件

package top.vkiss.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import top.vkiss.hibernate.HibernateUtils.HibernateUtils;
import top.vkiss.hibernate.domain.Person;

public class TestHibernate {
	public static void main(String[] args) {
		Session session = HibernateUtils.opeSession();
		//開啓事務
		Transaction tr= session.beginTransaction();
			//進行數據庫 操作 -- 增刪改查
/*			Person person = new Person();
			person.setPid(1);
			person.setAge("11");
			person.setPername("周浩浩");
			person.setSex("男");*/
			//save方法  就是保存一條記錄 
			//session.save(person);
			//修改一條記錄
			//session.update(person);
			//刪除一條記錄
			//session.delete(person);
			Person person= (Person) session.get(Person.class,2);
			System.out.println(person);
		<!-- 必須提交事務 -->
         tr.commit();//事務提交
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章