如何强制Hibernate 3.3或3.5使用CGLib而不是Javassist?

时间:2010-02-24 23:07:37

标签: java hibernate orm cglib

是否仍然可以强制Hibernate 3.3或3.5使用CGLib而不是Javassist?在我的属性文件中,我设置了

hibernate.bytecode.provider = cglib

但这似乎没有做到。有什么想法吗?

3 个答案:

答案 0 :(得分:7)

似乎有些人没有正确阅读我的答案所以我会改写:你的hibernate.properties看起来正确,属性定义明确,应该有效。那么,对不起这个问题,但是CGlib是否在类路径上?

更新:刚刚测试过,它对我有用。这是我在初始化时获得的输出:

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 support has been deprecated(这并不意味着你将无法使用CGLIB,但不再维护它的集成)。

答案 1 :(得分:1)

是的,还提出

hibernate.properties 

进入某个源文件夹并记得在依赖项中使用hibermate-cglib-repack:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-cglib-repack</artifactId>
    <version>2.1_3</version>
</dependency> 

答案 2 :(得分:1)

请记住,CGLIB库大约4年没有开发。但是,您应该尽一切努力使您的代码与Javassist一起使用,而Javassist仍在积极维护。