Hibernate的MANUAL刷新模式

使用Hibernate的MANUAL刷新模式扩展的应用程序事务是在对话范围中控制的。Seam可以透明地管理刷新模式扩展。

如果将@Begin注解中的flushMode属性(或者页面描述符标签<begin-conversation>中的flush-mode属性)设置为MANUAL,Seam就会在对话启动时将持久化管理器转换成手工刷新。

@Begin(flushMode = FlushModeType.MANUAL)

public void beginApplicationTransaction () {...}

可以在组件描述符中全局的设置默认的刷新模式:

<core:manager default-flush-mode="MANUAL" ../>

应用程序事务的MANUAL刷新模式代码示例:

... 
@Name("   ")
@Scope(ScopeType.CONVERSATION)
@Transactional
public class ... implements Serializable {
   @In private EntityManager em;
   @RequestParameter private Long facilityId;
  @Out private Course course;

  @Begin(flushMode = FlushModeType.MANUAL)  //启动应用程序事务
 public void addCourse () {
   course = new Course ();
   course.setFacility (
        mentityManager.find(Facility.class,facilityId));
        entityManager.persist(course);   //不将变更刷到数据库
  }
 @Begin(flushMode = FlushModeType.MANUAL)  //启动应用程序事务
public void editCourse (Long id) {
      course = em.find(Course.class,id);
}
public String submitBasicInfo() {    //不将变更刷新到数据库
    return "next";
}
...
@End public String save () {
    em.flush();//将变更刷新到数据库
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值