如何在初始化Hibernate之前使Spring加载JDBC驱动程序';什么是SessionFactory?
我正在开发一个Spring(2.5.6)+Hibernate(3.2.6)web应用程序来连接自定义数据库。为此,我有定制的JDBC驱动程序和Hibernate方言。我确信这些自定义类是有效的(在我的单元测试中是硬编码的) 我想,问题在于Spring加载对象的顺序。 基本上:如何在初始化Hibernate之前使Spring加载JDBC驱动程序';什么是SessionFactory?,hibernate,spring,loading,jdbc,Hibernate,Spring,Loading,Jdbc,我正在开发一个Spring(2.5.6)+Hibernate(3.2.6)web应用程序来连接自定义数据库。为此,我有定制的JDBC驱动程序和Hibernate方言。我确信这些自定义类是有效的(在我的单元测试中是硬编码的) 我想,问题在于Spring加载对象的顺序。 基本上: 自定义数据库初始化 Spring从web.xml加载bean Spring加载ServletBeans(applicationContext.xml) Hibernate启动:显示正确加载的版本和所有属性 Hibernat
- 传递hibernate属性的不同技术:嵌入“sessionFactory”bean中,从hibernate.properties文件加载。没有任何效果,但我没有尝试使用hibernate.cfg.xml文件,也没有尝试使用数据源bean
- MyCustomJDBCDriver有一个静态初始值设定项块,它自己向DriverManager注册
- 尝试了Springbean的不同延迟初始化组合(lazy init=“true”),但没有任何效果
提前感谢。如果Hibernate负责获取数据库连接,则Hibernate属性为
Hibernate.connection.driver\u类
属性
就你而言:
hibernate.connection.driver_class = CustomJDBCDriver
如果Hibernate负责获取数据库连接,则Hibernate属性为
Hibernate.connection.driver\u类
属性
就你而言:
hibernate.connection.driver_class = CustomJDBCDriver
你在哪种环境下看到这个问题?spring上下文感知单元测试?jboss部署?(这可能是一个类加载器问题:例如,您使用的jboss发行版在servers/ctxt/lib中包含hibernate,并且驱动程序库在您的war中吗?)。事实上,它比这要复杂一点:Jetty运行在一个处理单元(PU)的容器中。因此,PU启动的时间比它创建和启动Jetty容器的时间要长。Jetty完成其余工作(WebAppContext稍后向PU注册)。我如何跟踪我的CustomJDBCDriver加载在哪个类加载器上以及Spring加载在哪个类加载器上?谢谢最后,我的一位同事为我找到了解决办法。正如@Thierry提到的,这是一个类装入器问题。我正在用Spring库部署我的应用程序,但处理单元已经加载了这些库(Jetty的lib文件夹)。所以他们发生了冲突。我找到的解决方案是将CustomJDBCDriver.jar放在Spring jar所在的同一文件夹中(jetty lib文件夹或apps/WEB-INF/lib中),并确保只有一个。就这样!谢谢大家!你在哪种环境下看到这个问题?spring上下文感知单元测试?jboss部署?(这可能是一个类加载器问题:例如,您使用的jboss发行版在servers/ctxt/lib中包含hibernate,并且驱动程序库在您的war中吗?)。事实上,它比这要复杂一点:Jetty运行在一个处理单元(PU)的容器中。因此,PU启动的时间比它创建和启动Jetty容器的时间要长。Jetty完成其余工作(WebAppContext稍后向PU注册)。我如何跟踪我的CustomJDBCDriver加载在哪个类加载器上以及Spring加载在哪个类加载器上?谢谢最后,我的一位同事为我找到了解决办法。正如@Thierry提到的,这是一个类装入器问题。我正在用Spring库部署我的应用程序,但处理单元已经加载了这些库(Jetty的lib文件夹)。所以他们发生了冲突。我找到的解决方案是将CustomJDBCDriver.jar放在Spring jar所在的同一文件夹中(jetty lib文件夹或apps/WEB-INF/lib中),并确保只有一个。就这样!谢谢大家!嗨,skaffman,我已经完全按照您所说的方式包含了driver_类-我可以看到它被加载到Hibernate日志中-并且驱动程序被加载并注册到DriverManager。所以这还不是我问题的答案。无论如何,谢谢。嗨,skaffman,我已经按照你所说的方式加入了driver_类-我可以看到它被加载到Hibernate日志中-驱动程序被加载并注册到DriverManager。所以这还不是我问题的答案。无论如何,谢谢你。