컨테이너 관리 트랜잭션을 이해하려고 시도했습니다. 아래에 언급 된 코드입니다.Hibernate lazy loading 작동하지 않음, 강제로 열심히로드해야 함
@Transactional
public void saveFees(FeesVO vo) throws Exception {
logger.info(" --- Finding User with Id ---- " + vo.getUserId());
User user = userDao.getUserById(Long.parseLong(vo.getUserId()));
logger.info(" ---- User Found with Id --- " + user);
userDao.saveFees(CommonUtil.convertFees(vo, user));
throw new Exception(" business exception ");
}
트랜잭션이 커밋되면 저장 방법 후에 비즈니스 예외가 발생할 수 있으므로 트랜잭션이 롤백 될 것으로 예상 했습니까? 내 이해가 맞습니까?
확인 된 예외로 인해 롤백이 발생하지 않습니다. 설명서를 확인하십시오. 나는 또한 질문 제목과 실제 질문의 관계를 이해하지 못한다. –
예. 내게 진짜 문제는 요금은 지연된 사용자 엔티티를 가진 콜렉션이다. 사용자를 가져 오는 데는 수수료 오브젝트를 가져올 필요가 없습니다. 왜 hibernate가 사용자 객체와 관련된 수수료 객체를 가져 오기 위해 쿼리를 실행하는 이유는 무엇입니까? – user2775185
질문을 수정하거나 더 자세히 설명해 주실 수 있습니까? 제목 (그리고 지금 귀하의 의견) * 게으른 로딩 * 언급하지만 질문 본문은 순전히 트랜잭션 관리에 관한 것입니다. –