此次第一次接触Hibernate,虽然之前学过其他的持久化框架,像MyBatis,我感觉面对两种相似功能的框架,总有第一感觉是两者有什么不同,现在先不细细讲解,毕竟才开始接触Hibernate,有些东西还不是很懂,今天就先说一下Hibernate的配置及简单事例。
这个就是ORM持久化映射
先说一下Hibernate的基本步骤:
安装Hibernate相关的zip文件,在help中install
1)创建Hibernate.cfg.xml文件
2)创建持久化类
3)编写关系对象映射文件 .hbm.xml文件
4)通过Hibernate API 编写访问数据库的代码
1.Hibernate.cfg.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 1. 配置数据库信息 -->
<property name="connection.url">jdbc:mysql:///safety</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">WXC196728</property>
<!-- 方言(连接的数据库类型) -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 2. 其他配置 -->
<!-- 显示生成的SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 是否对SQL语句进行格式化 -->
<property name="format_sql">true</property>
<!-- 制定自动生成数据表的策略 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 3. 导入映射文件 -->
<mapping resource="com/hibernate/first/UserDatabase.hbm.xml" />
</session-factory>
</hibernate-configuration>
2.持久化类
package com.hibernate.first;
import java.util.Date;
public class UserDatabase {
private int ID;
private String name;
private String password;
private Date dte;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDte() {
return dte;
}
public void setDte(Date dte) {
this.dte = dte;
}
public UserDatabase(String name, String password, Date dte) {
super();
this.name = name;
this.password = password;
this.dte = dte;
}
public UserDatabase() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "UserDatabase [ID=" + ID + ", name=" + name + ", password=" + password + ", dte=" + dte + "]";
}
}
3.对象映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-1-2 10:45:22 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.first.UserDatabase" table="UserTable">
<id name="ID" type="int">
<column name="ID" />
<!-- 指定主键生成方式,native:使用数据库本地方式 -->
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" />
</property>
<property name="dte" type="java.util.Date">
<column name="DTE" />
</property>
</class>
</hibernate-mapping>
4.使用Hibernate API访问数据库
package com.hibernate.first;
import java.util.Date;
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 org.junit.Test;
public class HibernateTest {
@Test
public void test() {
//创建Sessionfactory对象
SessionFactory sessionFactory=null;
/*
* 创建Configuration:对应Hibernate的基本信息和对象关系映射
(Configuration是加载Hibernate.cfg.xml文件,包含.hbm.xml文件)
*/
Configuration configuration = new Configuration().configure();
//2)创建ServiceRegistry对象 Hibernate 4.x新添加的对象
ServiceRegistry serviceRegistry=
new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory=configuration.buildSessionFactory(serviceRegistry);
//2、创建Session对象
Session session=sessionFactory.openSession();
//3、开启事物
Transaction transaction=session.beginTransaction();
//执行保存操作
UserDatabase userDatabase=new UserDatabase("qwe", "123", new Date());
session.save(userDatabase);
//提交事务
transaction.commit();
//关闭session
session.close();
//关闭sessionFactory
sessionFactory.close();
}
}