'JPA'에 해당되는 글 2

  1. 2008.12.07 This will cause infinitely deep XML
  2. 2008.12.07 failed to lazily initialize a collection of role
 

This will cause infinitely deep XML

Java | 2008. 12. 7. 01:48 | Posted by G.N.Jeong J.#

JPA를 이용해서 도메인 객체를 제공 받았는데, 그 도메인 객체가 하위의 객체와 서로 양방향 참조를 하고 있을 때, XML로 변환하려고 하면 제목과 같은 에러 메세지를 만날 수 있다.

구글링을 해 본 결과, 양방향 참조를 일방적으로 Null로 설정해주는 방법이 있었고,
@XmlTransient를 이용해서 양방향 참조가 일어나는 메소드에 설정해 주는 방법이 있었다.

하위 객체가 다시 상위객체를 참조할 경우( getParent() 같은 상위를 다시 참조하는 메소드)에 @XmlTransient를 설정해 준다.

그러면 객체가 별다른 설정 없이도 XML로 변환이 된다.

https://jira.jboss.org/jira/browse/JBSEAM-3268

댓글을 달아 주세요

failed to lazily initialize a collection of role

Java/Spring | 2008. 12. 7. 01:16 | Posted by G.N.Jeong J.#
Spring 2.5.x + JPA(Hibernate)를 이용하여 하위리스트를 포함하는 도메인 객체를 불러왔을 때, 기본값인  LAZY 로딩이 되지 않았다.

구글링을 해 본 결과 LAZY 로딩은 트랜젝션 범위내에서 이루어질 수 있다는 답변이 있었다.

그래서 Spring XML설정에서 트랜젝션 관리자를 선언해 주고 설정해 주었지만 되지 않았다.
이유인 즉, Test 코드가 있는 클래스가 설정한 트랜젝션 범위에서 벗어나 있었기 때문이었다.

따라서 @Transactional 이라는 어노테이션을 테스트 클래스에 붙여주고 테스트 하니, 정상적으로 출력이 되었다.

기본적으로 트랜젝션은 annotation을 적용시, annotation이 적용된 메소드가 끝날 때 마무리 된다.
물론 이미 상위 메소드에서 트랜젝션이 있었다면, 기본값인 경우 그 상위 메소드가 끝날 때 마무리 된다.
TAG JPA, LAZY, Spring

댓글을 달아 주세요