hibernate中fetch=Fettype.LAZY怠惰ローディング失敗処理方法


このような怠惰な負荷問題に対して、最後の方法はSpringを利用して提供されるHibernaneに対するサポートクラスの一つであり、一つのページ要求を開始する時にHbernateのSessionを開いて、このSessionを保持していることによって、HibernationのSessionのライフサイクルが長くなり、この要求が終了するまで、具体的にFilterによって実現される。では、Hibernameで怠惰に特性をロードしたいなら、sessionのライフサイクルを延長したいです。データをページに表示することを知っています。それでは、web.xmlファイルに以下の構成を追加します。

<!--   Spring               --> 
 <filter> 
  <filter-name>OpenSessionInViewFilter</filter-name> 
  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
 </filter> 
 <filter-mapping> 
  <filter-name>OpenSessionInViewFilter</filter-name> 
  <url-pattern>*.action</url-pattern> 
 </filter-mapping> 
注:1)OpenSession InView Filterはフィルタの名前で、*.actionはすべてのactionをブロックすることを表しています。
2)非ウェブページ要求(例えば、タイミングタスク)は、以下のように処理することができます。これは、動的にlazy=falsに変化することに相当します。

/**
 * @Author masl - 2017/9/28 14:22
 * @param setRepaymentId
 * @param initSubs :          
 * @return
 */
@Override
public SetRepayment findSetRepaymentById(Integer setRepaymentId, boolean initSubs) {
  SetRepayment setRepayment = null;
  if (setRepaymentId != null) {
    setRepayment = setRepaymentDao.get(setRepaymentId);
    if (setRepayment != null && initSubs) {
      Hibernate.initialize(setRepayment.getSetIncomes());
    }
    return setRepayment;
  }
  return null;
}
締め括りをつける
以上は小编でご绍介したヒベルナツの中fetch=Fetchpe.LAZYの怠惰なロード失败処理方法です。皆様のご协力をお愿いします。ここでも私たちのサイトを応援してくれてありがとうございます。