Hibernate是一个开源的对象关系映射框架,在学习之前,首先让我们先了解一下Hibernate环境是如何搭建的。废话不多说,直接进入正题。
建项目,引Jar包
首先,我们需要创建一个Java项目,创建好项目之后,就需要引入与Hibernate相关的jar包。这里,我把这些jar包统一的加到一个库中。我们自己建立一个库“HIBERNATE3”,把Hibernate中的第三方jar包和Hibernate.jar都引入,当然,还有数据库的jdbc驱动(我这里用的是mysql)如图:
然后,我们就可以把建好的库引入到项目中了,具体操作为:右键项目名称-->Properties-->Java Build Path,如图:
核心文件配置
到现在,已经把建好的库引入到项目中了,之后我们要做的就是,把Hibernate的核心配置文件(hibernate.cfg.xml)引入到项目中,该核心配置文件会给Hibernate提供数据库的映射,使得Hibernate与数据库进行连接。如图所示:
之后,我们需要对Hibernate核心文件做一下配置,加入MySQL的JDBC驱动,配置数据库连接。代码如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">bjpowernode</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
</session-factory>
</hibernate-configuration>
建立实体类
到这里,简单的环境就搭建好了,之后就是建立实体类,并对实体类进行映射了。为了方便起见,建立一个User实体类,并且定义了几个简单的属性。代码如下:
package com.bjpowernode.hibernate;
import java.util.Date;
public class User {
private String id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
public String getId() {
return id;
}
public void setId(String id) {
this.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 getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
映射文件配置
实体类建立好之后,就需要将实体类与数据库进行映射,建立数据库映射文件(User.hbm.xml),代码如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bjpowernode.hibernate.User">
<id name="id">
<generator class="uuid"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="createTime"></property>
<property name="expireTime"></property>
</class>
</hibernate-mapping>
实体类的映射完成之后,我们还需要把实体类的映射源文件加入到Hibernate的核心配置文件中,代码如下所示:
<session-factory>
<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>
导入数据表
然后,我们还需要建立一个小Demo,通过读取hibernate.cfg.xml文件,实现建立数据表结构。(部分代码):
public static void main(String[] args) {
// 默认读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
测试客户端
最后,你可以建立一个客户端,对其进行测试,给数据库中插入几条数据。
package com.bjpowernode.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// 读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
// 建立SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
// 取得session
Session session = null;
try {
session = factory.openSession();
// 开启事务
session.beginTransaction();
User user = new User();
user.setName("Tom");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//保存User对象
session.save(user);
// 提交事务
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
// 回滚事务
session.getTransaction().rollback();
} finally {
if(session != null) {
if(session.isOpen()) {
// 关闭session
session.close();
}
}
}
}
}
测试结果
下面来看一下我们建立的表user以及user的表结构,如图:
最后,我们执行测试客户端,来看一下插入的数据,如图:
结束语
到这里,简单的搭建环境小实例就结束了,看到这,你明白如何搭建自己的Hibernate环境并对其进行测试了吗?这只是一个简单的小例子,Hibernate对JDBC提供了轻量化的对象封装,使得程序员可以对象的编程思维对数据库进行操作,而无需了解繁琐的数据表结构。