2010-12-06 4 views
3

Кто-нибудь знает способ перехвата вызова Hibernate сделает для создания экземпляра класса, указанного в файле .hbm.xml? Мне нужен способ использования специального класса ClassLoader для предоставления экземпляра. Я не хочу менять загрузку классов для Hibernate вообще, просто экземпляр отображаемого класса POJO.Пользовательский загрузчик классов для Hibernate-mapping

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

В примере кода выше, когда Hibernate хочет создать экземпляр Bar необходимо предоставить этот класс с помощью специального кода, вместо того, чтобы полагаться на поведение погрузочной класса по умолчанию.

Заранее спасибо за любую проницательность,
saethi

+0

Я пишу приложение, которое переносит Hibernate для связи с базой данных. Это приложение должно загрузить файл .jar, содержащий обновленные сопоставления и POJO. Затем приложение выключит Hibernate и вернет его, используя новые сопоставления и POJO. Я использую дополнительный класс ClassLoader для облегчения загрузки динамического класса. Надеюсь, это ответит на ваш вопрос darioo. – saethi

ответ

1

Вы можете настроить способ Hibernate создает объекты с пользовательской Tuplizer. См. Документацию о спящем режиме, chapter 4.5.

Вы можете расширить PojoEntityTuplizer и переопределить метод buildInstantiator(PersistentClass persistentClass), вернув экземпляр Instantiator, который строит объекты, но вы предпочитаете.

+0

Это выглядит действительно многообещающим; Я скоро вернусь к результатам. Спасибо, Флавио! – saethi

+0

Это похоже на шарм. Спасибо еще раз за помощь! – saethi

+1

Обратите внимание на тех, кто использует этот ответ, мне пришлось изменить сущность-режим = «динамическая карта» из примера в entity-mode = «pojo», чтобы получить точный результат, который я искал. – saethi

Смежные вопросы