public class HibernateUtil {
private static SessionFactory factory;
/**
* 在hibernate中有三个核心的接口:
* 1、SessionFactory 对应一个数据源,跟hibernate.cfg.xml配置文件对应
* 2、Session hibernate用于操作数据库的api
* 3、Configuration 用于读取hibernate的核心配置文件
*/
static {
factory = new Configuration().configure().buildSessionFactory();
}
/**
*
* 打开hibernate会话
* */
public static Session openSession() {
Session session = null;
session = factory.openSession();
return session;
}
/***
* 从当前线程中获取session
* @return
*/
public static Session getCurrSession() {
Session session = factory.getCurrentSession();
return session;
}
/**
* 开启事务
*/
public static void beginTx() {
factory.getCurrentSession().beginTransaction();
}
/**
* 提交事务
*/
public static void commit() {
factory.getCurrentSession().getTransaction().commit();
}
/**
* 回滚事务
*/
public static void rollback() {
factory.getCurrentSession().getTransaction().rollback();
}
public static void closeFactory() {
factory.close();
}
public static void closeSession() {
factory.getCurrentSession().close();
}
public static void main(String[] args) {
/**
* hibernate开发步骤:
* 1、导入hibernate所必须的jar包,在hibernate下载包中的lib目录下的required文件夹中
* 2、配置hibernate.cfg.xml配置文件
* 3、创建一个SessionFactory
*/
//Configuration.configure()方法默认去读取"hibernate.cfg.xml",如果hibernate核心配置文件名发生变化,则需要手动重新设置
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
System.out.println(session);
Student stu = new Student("tom", 18, new Date());
session.save(stu);
session.close() ;
factory.close();
}
}
@Test
public void insertTest() {
Session session = HibernateUtil.openSession();
//此时新建的java对象对于hibernate来说,是一个瞬时态(临时态)对象
Student stu = new Student(1,"张三", 22, new Date());
//开启事务,否则无法添加数据
Transaction tx = session.beginTransaction();
// tx.begin();
//保存对象save方法
session.save(stu); //对象被保存后就变成持久态
/**
* 如何分别持久态与瞬时态
*/
System.out.println(stu); //对象保存后,hibernate会自动给id赋值
/**