Hibernate中Entity对象状态的检测

 根据与持久化上下文的联系不同,Hibernate应用中的Entity对象可能处于不同的状态,那么持久化上下文如何检测Entity对象的状态呢?持久化上下文提供了专门的方法检测给定的Entity对象的状态。

1. 检测Entity对象是否处于managed/persistent状态

对于Hibernate的Native API,示例如下:

boolean contained = session.contains( person );

对于Hibernate的JPA API,示例如下:

boolean contained = entityManager.contains( person );


2. 检测延迟加载的Entity对象是否被加载

对于Hibernate的Native API,示例如下:

boolean personInitialized = Hibernate.isInitialized( person );

boolean personBooksInitialized = Hibernate.isInitialized( person.getBooks() );

boolean personNameInitialized = Hibernate.isPropertyInitialized( person, "name" );


对于Hibernate的JPA API,示例如下:

PersistenceUtil persistenceUnitUtil = Persistence.getPersistenceUtil();//recommended
//PersistenceUnitUtil persistenceUnitUtil = entityManager.getEntityManagerFactory().getPersistenceUnitUtil();//not recommended

boolean personInitialized = persistenceUnitUtil.isLoaded( person );
boolean personBooksInitialized = persistenceUnitUtil.isLoaded( person.getBooks() );
boolean personNameInitialized = persistenceUnitUtil.isLoaded( person, "name" );

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值