这是本人学习Hibernate的第一个例子:
1,先配置数据库驱动,点击myeclipse的myeclipse Database Explore,选择相应的数据库,进行配置,完成之后退出。
2,给项目添加支持Hibernate的功能,使用到的jar包有如下的:
进行了一系列的选项之后,到sessionfactory这一项,不选。然后点击完成。
3,配置表到java类的映射。点击右上方的myeclipse中的myeclipse database expore视图,选择数据驱动,选中要操作的表,然后右击,选择Hibernate reverse engineering,选择实体类所在的包,点Next,接着点击完成即可,这样就完成了表到java类中的对应映射关系。
4,编写POJO,封装数据库中的表。
package com.entity;
import java.util.Date;
//封装类
public class User {
public String id;
public String name;
public String password;
public Date createTime;// 创建日期
public 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;
}
}
5,编写DAO,
(1)获得配置文件
(2)建立sessionfactory
(3)从sessionfactory中获得打开session,一个session对应数据库一条记录
(4)开启session的事务
(5)执行数据库操作,
(6)提交事务,
(7)之前的最好是使用try catch,这样,如果有异常的话,这里可以进行事务的回滚
(8)关闭事务。
package com.test;
import java.util.Date;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import com.entity.User;
public class Test {
public static void main(String[] args) {
// 读取hibernate.cnf.xml配置文件,获得数据库的相关配置
Configuration cfg = new Configuration().configure();
// 创建sessionfactory,在配置文件里面创建获得sessionfactory
SessionFactory sfactory = cfg.buildSessionFactory();
// 在sessionfactory中取出session,即打开事务
Session session = null;
try {
for (int i = 0; i < 10000; i++) {
session = sfactory.openSession();
// 开启事物
session.beginTransaction();
// 通过user.hb.xml文件,把数据库的表抽象成为java的类,方便使用对象编程
// 通过封装的类中的属性来操作数据库中表中的字段
User user = new User();
// 通过setter方法来设置user类中的属性的值,这样就间接操作了数据库中的表的字段
user.setId("001" + i);
user.setName("xywei" + i);
user.setPassword("1234" + i);
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.close();
System.out.println("====事务已经关闭!====");
}
}
}
}
}