hibernate中fetch=Fettype.LAZY怠惰ローディング失敗処理方法
このような怠惰な負荷問題に対して、最後の方法はSpringを利用して提供されるHibernaneに対するサポートクラスの一つであり、一つのページ要求を開始する時にHbernateのSessionを開いて、このSessionを保持していることによって、HibernationのSessionのライフサイクルが長くなり、この要求が終了するまで、具体的にFilterによって実現される。では、Hibernameで怠惰に特性をロードしたいなら、sessionのライフサイクルを延長したいです。データをページに表示することを知っています。それでは、web.xmlファイルに以下の構成を追加します。
2)非ウェブページ要求(例えば、タイミングタスク)は、以下のように処理することができます。これは、動的にlazy=falsに変化することに相当します。
以上は小编でご绍介したヒベルナツの中fetch=Fetchpe.LAZYの怠惰なロード失败処理方法です。皆様のご协力をお愿いします。ここでも私たちのサイトを応援してくれてありがとうございます。
<!-- 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の怠惰なロード失败処理方法です。皆様のご协力をお愿いします。ここでも私たちのサイトを応援してくれてありがとうございます。