Как заставить Hibernate 3.3 или 3.5 использовать CGLib вместо Javassist?
Вопрос
Можно ли по-прежнему заставить Hibernate 3.3 или 3.5 использовать CGLib вместо Javassist?В моем файле свойств я устанавливаю
hibernate.bytecode.provider = cglib
Но, похоже, это ничего не дает.Есть какие-нибудь мысли?
Решение
Кажется, некоторые люди неправильно прочитали мой ответ, поэтому я перефразирую:ваш hibernate.properties
выглядит правильно, свойство четко определено, оно должно работать.Итак, извините за вопрос, но есть ли CGlib в classpath?
Обновить: Только что протестировал, и у меня это работает.Вот результат, который я получаю во время инициализации:
15 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 18 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.bytecode.provider=cglib} 20 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib
PS:Обратите внимание , что Поддержка CGLIB устарела недавно (это не означает, что вы не сможете использовать CGLIB, но интеграция с ним больше не поддерживается).
Другие советы
Да, тоже положил
hibernate.properties
в какую-нибудь исходную папку и не забудьте иметь hibermate-cglib-repack в dependencies:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>
Помните, что библиотека CGLIB не разрабатывалась около 4 лет.Однако вы должны сделать все, чтобы ваш код работал с Javassist, который все еще активно поддерживается.