首页 >> 百科生活 > 趣味生活 >

sessionfactory.opensession

2022-08-18 08:44:05 来源: 用户:姚烟紫 

大家好,小讯来为大家解答以上的问题。sessionfactory.opensession这个很多人还不知道,现在让我们一起来看看吧!

1、Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础。

2、对象的生命周期、事务的管理、数据库的存取都与Session息息相关.Session对象是通过SessionFactory构建的,Hibernate有两种获取session的方式getCurrentSession()获得与当前线程绑定的sessionpackagecom.deptsystem.util;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;/***Hibernate的帮助类,用来获取Session**/publicclassHibernateUtil{//将sessionFactory设为静态,可以保证其整个应用程序中的唯一性privatestaticfinalSessionFactorysessionFactory=newConfiguration().configure().buildSessionFactory();privateHibernateUtil(){};//将构造方法设为似有,只能使用“类名+静态方法”的方式调用/***获取Session工厂*@returnSessionFactory*/publicstaticSessionFactorygetSessionFactory(){returnsessionFactory;}/***获取Session*@returnSession*/publicstaticSessiongetSession(){returnsessionFactory.getCurrentSession();}测试类部分代码:publicstaticvoidmain(String[]args){Sessionsession=HibernateUtil.getSession();//获取sessionsession.beginTransaction();//开始事务Useruser=(User)session.get(User.class,1);System.out.println(user.getName());session.getTransaction().commit();//事务提交session.close();}2、openSession()打开一个新sessionpackagecom.deptsystem.util;importorg.hibernate.Session;//hibernate3的importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;/***Hibernate的帮助类,用来获取Session**/publicclassHibernateUtils{privatestaticSessionFactoryfactory;static{try{//读取hibernate.cfg.xml文件Configurationcfg=newConfiguration().configure();//建立SessionFactoryfactory=cfg.buildSessionFactory();}catch(Exceptione){e.printStackTrace();}}//获得开启着的SessionpublicstaticSessiongetSession(){returnfactory.openSession();}//关闭SessionpublicstaticvoidcloseSession(Sessionsession){if(session!=null){if(session.isOpen()){session.close();}}}publicstaticSessionFactorygetSessionFactory(){returnfactory;}}测试类部分代码:publicstaticvoidmain(String[]args){Sessionsession=HibernateUtil.getSession();//获取sessionsession.beginTransaction();//开始事务Useruser=(User)session.get(User.class,1);System.out.println(user.getName());session.getTransaction().commit();//事务提交session.close();}3、使用注意事项1)openSession和getCurrentSession的区别openSession必须关闭,currentSession在事务结束后自动关闭openSession没有和当前线程绑定,currentSession和当前线程绑定2)如果使用currentSession需要在hibernate.cfg.xml文件中进行配置:a、如果是本地事务(jdbc事务)threadb、如果是全局事务(jta事务)jta全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程。

3、资源管理器一般使用XA二阶段提交协议与“企业信息系统”(EIS)或数据库进行交互。

4、本地事务:在单个EIS或数据库的本地并且限制在单个进程内的事务。

5、本地事务不涉及多个数据来源。

本文到此分享完毕,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章