当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

EJB中操纵Hibernate的办法以及常见问题[Java编程]

赞助商链接



  本文“EJB中操纵Hibernate的办法以及常见问题[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

EJB中利用Hibernate的办法应当大家城市,不过很多人大概没注意下面几个问题,首先我们来看下面这段代码.

public class HibernateTestBean implements SessionBean ...{
  SessionContext sessionContext;
  SessionFactory sf;
  public void setSessionContext(SessionContext sessionContext) ...{
    this.sessionContext = sessionContext;
    try ...{
      InitialContext ctx = new InitialContext();
      sf=(SessionFactory) ctx.lookup("java:/hibernate/SessionFactory");
    } catch (NamingException ex) ...{
      ex.printStackTrace();
    }
  }
  public void tran()...{
    tran1();
    tran2();
  }
  public void tran1() ...{
    Session session=sf.getCurrentSession();
    Message msg=new Message();
    msg.setCreateTime(new Date());
    msg.setDetail("trans1");
    session.save(msg);
    System.out.println("Session:"+session.hashCode());
    session.flush();
    session.close();
  }
  public void tran2() ...{
   Session session=sf.getCurrentSession();
   Message msg=new Message();
   msg.setCreateTime(new Date());
   msg.setDetail("trans2");
   session.save(msg);
    System.out.println("Session:"+session.hashCode());
// throw new RuntimeException("wrong");
 }
……
}

注:EJB采取CMT,各办法的事件属性是required

客户端调用tran以上代码可以精确运行吗?

假如把tran1中的sf.getCurrentSession();改成sf.openSession()可以精确运行吗?

辨析:

1 上述代码是不能精确运行的,运行tran2时会抛出非常,奉告你session is closed.

其实这是应为getCurrentSession()会利用环境已有的Session,同时注意getCurrentSession()要在事件的环境中利用.

这是大概你一定会问,那么什么时刻关闭Session呢?答案是事件完成的时刻(提交或是回滚).

2 假如上述代码tran1中的sf.getCurrentSession();改成sf.openSession()代码将可以精确运行.这是因为openSession()每次城市返回一个新的Session.而在tran2种的sf.getCurrentSession()并不会利用tran1中的session,而是会利用当前事件环境中的默许的session.

大概你会问假如tran2种的调用抛出RuntimeException,tran1所作的操作还可以回滚吗?

答案是仍旧可以回滚的.


  以上是“EJB中操纵Hibernate的办法以及常见问题[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 深化根究EJB中新的消息驱动组件
  • <b>筹划情势在EJB中的操纵</b>
  • 对EJB中Session Bean的见解
  • EJB中操纵Hibernate的办法以及常见问题
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .