Spring 4+springmvc+springdataJPA+hibernate 4統合怠け者ロードの問題
8423 ワード
サマリ
本文は主に「spring 4+springmvc+springdataJPA+hibernate 4統合」を解決するため、OneToMany、ManyToOneを注釈し、怠惰なロードを構成し、エラーを報告する問題を解決する.
注意:OpenEntityManagerInViewFilterは、怠惰なロードの問題を解決することができますが、sessionがオンのときにオン時間を増やすのが欠点で、一般的な内部管理システムでは問題にならないかもしれませんが、コンカレント量が大きいとパフォーマンスの問題が発生します
最初の質問
org.hibernate.LazyInitializationException: could not initialize proxy - no Session at
解決策:
WebでxmlではspringSevletの位置を設定orgを使用する.springframework.orm.jpa.support.OpenEntityManagerInViewFilter、コードは以下の通りです.
<filter>
<filter-name>Spring OpenEntityManagerInViewFilterfilter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilterfilter-class>
filter>
<filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
2番目の質問
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ......., no session or session was closed
通常、タイミングタスクquartzJob、またはJunitテストで怠惰なロードで発生したエラーを使用します.
解決策:
トランザクション構成注記を追加します.junitコードは次のとおりです.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"file:src/main/webapp/WEB-INF/applicationContext.xml",
"file:src/main/webapp/WEB-INF/demo-servlet.xml"})
@Transactional
public class Test {
終わります.