您的位置:首页 > 其它

hibernate---核心开发接口1(重点)

2014-08-10 15:54 459 查看
面试考这个比较少a) Session session = sessionFactory.openSession(); 永远都是打开新的
记得要 closeb) Session session = sessionFactory.getCurrentSession();1.先找原来是否有存在,有就用 没有就开一个(在未提交之前永远都是一样的)用途:2.界定事务边界事务提交自动close 3.current_session_context_class(jta,thread) thread使用 connection
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>

一般用thread 有session就用当前的session jta等学了EJB3.0 用于分布式(不止一个数据库)

还有如果设为
<property name="current_session_context_class">jta</property>


是不行的,application提供,tomcat本身不具备这样的能力(jboss可以,或者用spring也可以),

那要是

<property name="current_session_context_class">thread</property>
这行去掉,

如果要用getCurrentSession是不行了,因为我们没有设置session的上下文,既不是thread也不是jta,所以会报错



11.1. Session和事务范围(transaction scope)


11.2.1. 非托管环境


11.2.2. 使用JTA(学了EJB3再说)

		//Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession();session.beginTransaction();
session.save(t);Session session2 = <span style="font-family: Arial, Helvetica, sans-serif;">sessionFactory.getCurrentSession();</span>System.out.println(session == session2) //输出;truesession.getTransaction().commit(); //session 提交后 既session2跟着提交了Session session3 = sessionFactory.getCurrentSession();//重新打开一个System.out.println(session == session3);//输出:false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: