Hibernate入门BLOG [二、封装拿到数据库配置session对象、并且执行操作]

来源:互联网 发布:淘宝店铺布局怎么设计 编辑:程序博客网 时间:2024/05/16 16:55
在上文中我们自己首先单独配置了hibernate的相关xml文件和Java文件。而且还实现了操作案例。但是在实际应用中我们不可能每一次都去获取Configuration对象然后去构建sessionFactory对象。这会浪费资源而且影响效率。所以这次我们就将hibernate初始化的一系列代码封装起来并且执行操作的案例。请看下面附注释的代码public final class HibernateUtil {//设计模式的体现。将只执行一次的代码块放到静态块里面。在系统访问HibernateUtil//的时候。装载虚拟机,静态代码块将会被执行。这样将sf赋值。然后我们就可以拿到了private static SessionFactory sf;private HibernateUtil(){}//当虚拟机在加载的时候会执行这段代码。之后不会执行了static{//hibernate的初始化,非常耗时、它读取配置文件。一般只执行一次Configuration cfg = new Configuration(); //读取配置文件。cfg.configure();//类似于jdbc中的DriverManagersf = cfg.buildSessionFactory();}//包装hibernate的返回对象。public static Session getSession(){return sf.openSession();}}2、调用封装好的方法完成操作public class Base {public static void main(String[] args) {//赋值要操作的对象User user = new User();user.setName("zhanglei");user.setBirthday(new Date());//调用静态方法去完成操作。不用写过多的代码Base.addObj(user);}//添加操作很标准的写法static void addObj(Object obj){Session s = null;Transaction tx = null;try{//通过封装的类拿到session对象s = HibernateUtil.getSession();//打开事务tx = s.beginTransaction();//执行操作s.save(obj);tx.commit();}catch(HibernateException e){//判断事务有没有完全提交的判断方式if(tx != null){tx.rollback();throw e;}}finally{//利用finally关闭session对象if(s != null){s.close();}}}}

原创粉丝点击