Hibernate日志实现
一、hibernate3.x
在hibernate3.x或之前的版本中,hibernate引入了slf4j这个日志接口,用户根据自己的需要提供日志的具体实现,如:log4j。但是如果使用log4j作为具体的日志实现,必须提供slf4j和log4j的结合jar包,如slf4j-log4j12-1.5.8.jar。当然其他的日志实现也必须提供整合jar包。
二、hibernate4.x
在hibernate4.x或之后的版本中,hibernate默认没有引入slf4j这个日志接口,而是默认使用jboss的日志实现,如jboss-logging-3.1.0.CR2.jar。
在hibernate4.x中,hibernate日志的加载顺序:
1.JBoss的自己的日志实现
2.log4j的2.x
3.log4j的1.x
4.SLF4J
5.java.util.logging
三、存在问题
在hibernate3.x中因为使用slf4j这个接口需要导入具体的日志实现jar和整合jar。
对于hibernate4.x,在maven pom文件中,如果导入了hibernate-core,自动会导入依赖包javassist-3.12.1.GA.jar(当然可能不是这个版本)。但是对于hibernate3.x则必须在pom文件中单独配置javassist-3.12.1.GA.jar的依赖,如:
<dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.0.SP1</version> </dependency>
如果没有导入该jar包,则会抛一下异常:
Initial SessionFactory creation failed.org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]