2011-11-03 3 views

답변

2

lazyproxy 일 때 문제의 연관 필드는 프록시 개체로 초기화됩니다. 프록시가 생성 될 때 연결된 객체의 실제 유형을 알 수 없으므로이 프록시는 분명히 프록시에 캐스팅 될 수 없습니다.

lazyno-proxy 인 경우 필드가 초기화되지 않습니다. 대신 해당 필드에 액세스하려고하면 해당 필드에 대한 액세스가 차단되고 실제 개체가로드됩니다. 이 차단에는 바이트 코드 계측이 필요합니다.

+0

감사! 좋은 대답. 그냥 궁금 해서요 :'lazy = no-proxy' 케이스에서, 프록시가 없다면, 관련된 객체의 id가 저장된 자바 객체 (실제로 연결된 객체가로드되기 전에)가 존재합니까? – rapt

+1

@rapt : 연관 필드가 들어있는 객체 안에 저장되어있는 것 같습니다. 바이트 코드 계측 중에 해당 ID를 저장하는 추가 필드를 추가 할 수 있습니다. – axtavt