domain对象和映射文件没有改变。
ackage ntt.bhb.xxl.two.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
// 将初始化的工作,有工具类完成
// 工具类特点
// 1 不希望被继承 -> final
// 2 不希望存在多个实例 -> 单例模式 or 私有构造函数(工具类使用静态方法)
public final class HibernateUtil {
//这个静态变量应该是 sessionFactory,而不是session
//private static Session session;
//常驻内存的应该是工厂而不是产品
private static SessionFactory sessionFactory;
private HibernateUtil(){
}
static {
Configuration cfg = new Configuration();
// 读取解析hibernate.cfg.xml
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static Session getSession() {
return sessionFactory.openSession();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
/
package ntt.bhb.xxl.two.test;
import java.util.Date;
import ntt.bhb.xxl.two.domains.User;
import ntt.bhb.xxl.two.util.HibernateUtil;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.Session;
public class Base {
public static void main(String[] args) {
User user = new User();
user.setBirthday(new Date());
user.setName("sbbaohongbinwoshinibaba");
addUser(user);
}
static void addUser(User user ){
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
session.save(user);
transaction.commit();
} catch (HibernateException e) {
//在使用对象之前,先判断是否为空
if (transaction != null){
transaction.rollback();
}
// 处理不了的异常,继续往上抛
throw e;
// 一定要释放資源 -> finally
}finally{
//在使用对象之前,先判断是否为空
if(session != null){
session.close();
}
}
}
}