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();//事務提交
}
}