2011-01-12 3 views
8

나는 Spring 3 + JPA 2.0 애플리케이션을 가지고있다. 내 @Controller에는 초기화 된 객체가 필요하지만 프록시가 있으므로 프로그래밍 방식으로 초기화 할 수 있어야합니다. org.hibernate.Hibernate.initialize(Object)과 비슷한 기능이 필요합니다.강제하는 방법 Hibernate JPA 프록시를 JSON 호출에서 사용하도록 초기화

누군가 도움이 될 수 있습니다. 이 객체는 AJAX 작업에 사용됩니다. 프로퍼티가 프록시 인 경우 JSON으로 보낼 수 없습니다.

답변

4

내 지식이 JPA 옵션이 아닙니다. Hibernate.initialize(..)을 사용해야합니다.

실제로 최대 절전 모드 구현을 살펴본 결과, 게으른 모음은 예상하지 못한 많은 경우에 초기화 된 것처럼 보입니다. entityManager.contains(..)Persistence.getPersistenceUtil().isLoaded(...)처럼 이것들을 시도해 보라. 그러나 나는 그런 구현 세부 사항에 의존해야한다고 생각하지 않는다.

+0

그래,이 경우일지도 모르지만. 추가 개체를 만든 다음보기로 보냅니다. 우리는 아직 프로젝트 초기에 JPA 이유가 붙지 않았으므로 최대 절전 모드로 전환하기로 결정했습니다. :) 이제 모든 최대 절전 모드 사용자들은'Hibernate.initialise (..)'를 사용하기 만하면됩니다. – pmanolov

0

우리는 우리 응용 프로그램에서 비슷한 작업을 수행하고 있으며 데이터베이스 엔티티 객체를 분리하고 JSON 출력을위한 또 다른 클래스를 사용하는 것이 유용하다는 것을 알았습니다.

당신은 JSON의 당신의 개체를 검사하고 다음과 같은 객체가 할 수있는 개체에 각에 대한 몇 가지 JSON 모든 재산을 척 프레임 워크를 사용하는 경우 :

PersonEntity을 - JPA 에 의해 관리되는 클래스 PersonJsonOutput - JSON 출력용으로 특별히 설계된 클래스

장기적으로 더 안전 할 수도 있습니다. 이렇게하면 자동으로 JSON 서비스에 반영되지 않는 데이터베이스 변경 사항을 가질 수 있으므로 데이터베이스 엔티티가 변경되는 즉시 이전 버전을 중단하는 대신 JSON 서비스의 버전을 변경하는 것이 좋습니다.

는 또한 '

이 대답은 정말 그 방법에 따라 달라집니다 ... 등 당신의 JSON, 문자열로 데이터베이스에 당신에게 말의 날짜 형식의 조건이나 강제 숫자에 JSON 출력하게 제어 할 수 JSON을 다시 생성하지만 라이브러리에서 일부 내성 검사를하는 것처럼 들립니다.

0

나는 늦은과 대답이 허용됩니다 알고 있지만, 다른 표준 JPA의 방법은 당신이 전에 DAO에서 개체를 반환으로 초기화 할 목록에 크기() 메서드를 호출하는 것입니다

Object.getList().size(); 

이렇게하면 속임수를 쓰지 않아도되고 구현을위한 초기화 메커니즘을 사용하지 않아도됩니다.

관련 문제