Hibernate3.x与4.x的日志实现

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]

猜你喜欢

转载自javawangbaofeng.iteye.com/blog/2241548