Hibernate 将库jar整合到spring应用程序中,以定义一个';sessionFactory';
问题 我无法在项目中定义正确的Hibernate 将库jar整合到spring应用程序中,以定义一个';sessionFactory';,hibernate,spring,orm,pojo,sessionfactory,Hibernate,Spring,Orm,Pojo,Sessionfactory,问题 我无法在项目中定义正确的sessionFactorybean,导致web应用程序初始化失败 日志输出 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webServiceTest' defined in ServletContext resource [/WEB-INF/ classes/appcontext-spring.xml]:
sessionFactory
bean,导致web应用程序初始化失败
日志输出
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webServiceTest' defined in ServletContext resource [/WEB-INF/
classes/appcontext-spring.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate
' is required
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 50 more
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
... 60 more
我使用xml映射和POJO与maven创建了一个ORM库。
我已导入到我的项目中,无法配置以访问DDBB
- jdbc.properties文件使用DDBB连接定义良好(
,db.url
,等等)db.properties
- 库中的所有POJO都扩展了HibernateDaoSupport并实现了基本操作接口(CRUD)。我正在使用一个扩展DaoBase的服务webServiceTest来进行测试
- 我在ORM库中进行了JUnit测试,结果很好
dataSource
、sessionFactory
等定义:
${db.driver}
${db.url}
${db.username}
${db.password}
${db.maxActive}
${db.maxIdle}
${db.maxWait}
真的
真的
11
真的
org.hibernate.dial.Oracle9iDialect
真的
问题:
- Spring配置必须从ORM jar加载hibernate.cfg.xml?我该怎么做
- 如何将配置从Spring ORM项目加载到另一个项目中
- 我在ORM中定义了映射,但我没有在ORM中定义任何要包含在jar中的应用程序上下文
default autowire=“byName”
解决了这个问题,它加载了appcontext-spring.xml中需要的对象注入的所有配置
并创建sessionFactory。我已经使用bean标记“default autowire=“byName”的属性解决了这个问题,它加载了所有需要的对象注入配置。autowire实例化了所有需要的bean以创建数据库连接
<!-- PERSISTENCE SETUP -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
<property name="maxActive">
<value>${db.maxActive}</value>
</property>
<!-- Maximum number of idle dB connections to retain in pool. Set
to 0 for no limit -->
<property name="maxIdle">
<value>${db.maxIdle}</value>
</property>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if this timeout
is exceeded. Set to -1 to wait indefinitely. -->
<property name="maxWait">
<value>${db.maxWait}</value>
</property>
<!-- Autocommit setting. This setting is required to make Hibernate
work. Or you can remove calls to commit(). -->
<property name="defaultAutoCommit">
<value>true</value>
</property>
<!-- Recover abandoned connections -->
<property name="removeAbandoned">
<value>true</value>
</property>
<!-- Set the number of seconds a dB connection has been idle before
it is considered abandoned. -->
<property name="removeAbandonedTimeout">
<value>11</value>
</property>
<!-- Log a stack trace of the code which abandoned the dB connection
resources. -->
<property name="logAbandoned">
<value>true</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="lobHandler">
<ref bean="oracleLobHandler" />
</property>
<property name="dataSource" ref="dataSource" />
<!-- configura la fuente de los mappings -->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
default-lazy-init="true" default-autowire="byName">