지속성을 위해 hibernate/JPA을 사용하는 응용 프로그램이 있습니다. 스프링을 사용합니다.
일부 지속 bean은 REST 서비스에서 검색하는 외부 오브젝트에 의존합니다.관리 엔티티에 컨텍스트를 인식시키는 방법은 무엇입니까?
이 REST 서비스의 클라이언트 스텁은 등록 된 스프링 서비스입니다.
최대 절전 모드가 진행되는 동안 해당 외부 개체의 부하를 감 쌉니다. 이렇게하면 복잡한 HQL 쿼리를 통해 객체를 가져 오더라도 내 객체가로드 후에 항상 유효하다는 것을 알 수 있습니다.
문제는 어떤 방법을 사용하든 내 지속 된 빈에서 (따라서 REST 클라이언트) 스프링 애플리케이션 컨텍스트를 얻는 데 어려움이 있습니다.
CustomUserType는 Hibernate에 의해 통해 인스턴스되고, 따라서 더 봄 분사가 발생할 수 있습니다 : 자신의 ID를 통해 REST에서 내 개체를 가져
- 사용 UserType을 :
나는 다음을 시도했다.
- 사용 이 JPA 주석 @AfterLoad :
이 하나 더 나쁘다를 더 EntityManager의 세션 또는 사용 가능한 Spring 컨텍스트 - 사용자 LifeCycle의 인터페이스에 onLoad (세션들, 직렬화 ID) 방법 :
나는 액세스 할 수 없습니다 여기에 세션에. 하지만 ApplicationContext을 인식하는 맞춤 세션을 만드는 방법을 모르겠습니다. 시간에 대한
내가 더러운 해결 방법을 사용하고, 인 : 봄 WOLRD에서 개체에 대한 정적 게터를 제공하는 ApplicationHolder 봄 서비스가 그것에 액세스 할 수 있습니다.
최대 절전 모드 나 지속 된 빈 컨텍스트를 인식하는 방법에 대해 실전이 있습니까? 내 DAO에 그 일을
THks
편집
내 첫 번째 방법 이었지만, 실제로 나는 그렇게 같이 가져 오는 필요 많은 하위 개체가 :
LocalObject
* - localSubObject1
- refToExternalObject ----------> externalObject1
* - localSubObject2
- refToExternalObject ----------> externalObject2
- refToExternalObject ----------> externalObject3
내가 좋아하는 것을 내 LocalObject가 일관되고 깨끗한로드를 갖습니다.
이렇게하면 필자는 DAO에서 Complex HQL을 작성하고 더 이상 외부 객체를 가져 오지 않을 수 있습니다.
Hibernate Dao를 Bean (SessionFactory 등을 삽입하는 어쩌면 어쩌면)으로 가지고 있고 반환하기 전에 Dao 메소드에서 엔티티 초기화를 완료하는 것이 더 깔끔합니다. –
나는 아직도 DAO가 갈 길이라고 생각한다. 가져올 필요가있는 외부 엔티티에 사용자 정의 주석을 추가 할 수 있으며, DAO는 주석을 찾아 무엇을 스캔 할지를 확인합니다. http://isagoksu.com/2009/development/java/creating-custom-annotations-and-making-use-of-them/ –