2010-12-06 4 views
3

하이버 네이트가 .hbm.xml 파일에 표시된 클래스를 인스턴스화하는 호출을 인터셉트하는 방법을 아는 사람이 있습니까? 인스턴스를 제공하기 위해 사용자 정의 ClassLoader를 사용하는 방법이 필요합니다. 나는 Hibernate에 대한 클래스 로딩을 일반적으로 변경하지 않고 맵핑 된 "POJO"클래스의 인스턴스 만 변경하려고한다. 최대 절전 모드가 의 인스턴스를 원하는 위의 예제 코드에서 하이버 네이트 매핑을위한 커스텀 클래스 로더

<hibernate-mapping> 
    <class name="com.foo.Bar" table="Bar"> 

, 내가 대신 기본 클래스 로딩 동작에 의존하는 사용자 지정 코드와 클래스를 제공해야합니다. 어떤 통찰력 사전에

감사합니다,
saethi

+0

데이터베이스와 통신하기 위해 Hibernate를 랩핑하는 응용 프로그램을 작성하고 있습니다. 이 애플리케이션은 업데이트 된 매핑과 POJO가 포함 된 .jar 파일을 다운로드해야합니다. 그러면 응용 프로그램은 Hibernate를 종료하고 새 매핑과 POJO를 사용하여 다시 가져옵니다. 동적 클래스 로딩을 용이하게하기 위해 추가 ClassLoader를 사용하고 있습니다. 바라건대 그 질문에 대답 darioo. – saethi

답변

1

당신은 방식 Hibernate는 사용자 정의 Tuplizer로 엔티티를 생성 사용자 정의 할 수 있습니다. 최대 절전 모드 설명서 (chapter 4.5)를 참조하십시오.

PojoEntityTuplizer을 확장하고 선호하는 엔티티를 빌드하는 Instantiator 인스턴스를 반환하여 buildInstantiator(PersistentClass persistentClass) 메서드를 재정의 할 수 있습니다.

+0

이것은 정말로 유망 해 보입니다. 나는 결과와 함께 곧 돌아올 것이다. 플라 비오 감사합니다! – saethi

+0

이것은 매력처럼 작동하는 것 같습니다. 도와 주셔서 다시 한 번 감사드립니다! – saethi

+1

이 답변을 사용하는 모든 사람에게 주시면 예제에서 entity-mode = "pojo"로 entity-mode = "dynamic-map"을 변경해야만 정확한 결과를 얻을 수 있습니다. – saethi

관련 문제