데이터베이스에서 개체를 반환하는 DAO를 호출하는 서비스 메서드가 있습니다. 이 메소드는 시스템의 여러 부분에서 호출됩니다. 그러나 한 가지 특별한 방법은 유형으로 ObjectClass _ $$ _ javassist_somenumber의 반환 유형을 얻는 것입니다. 어느 것이 사물을 던지고 있습니다. 저는 서비스 메소드를 다른 곳과 똑같이 호출합니다. 그래서 왜 자연수와 반대로 동면을 반환할까요?왜 Hibernate가 프록시 객체를 반환하나요?
"프록시 된"개체를 노출하는 방법이 있지만 그 작업을 수행해야한다고 생각하지 않습니다.
쿼리는 단순히 내가 BTW 3.3 최대 절전 모드 사용하고
hibernateTemplate.find("from User u where u.username = ?", username)
입니다.
그럼 개체가 열심히로드되고 이후 프록시 개체를 받고 있어요 이 특정한 호출, 나는 당신이 그 객체가 어느 것이 든 될 것이라고 짐작할 수 없을 것입니다. 흥미롭게도 tho는 메서드 A에서 DAO.getUser (String username)을 호출 할 때 User 객체를 얻지 만 메서드 B에서 메서드가 동일한 매너를 호출하면 프록시가 생깁니다. – predhme
일반적으로 문제는 프록시 *가 이와 같이 반환된다는 것입니다. * 올바르게 초기화되지 않았습니다. 그렇지 않으면 제대로 채워지면 상황이 정상적으로 처리되어야합니다. find 메소드가 초기화되지 않은 프록시를 반환하는 이유는 누구나 아는가? –