首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

spring整合hibernate时报错,该如何解决

2012-04-03 
spring整合hibernate时报错?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframe

spring整合hibernate时报错
<?xml version="1.0" encoding="UTF-8"?>
<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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-2.5.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  http://www.springframework.org/schema/tx 
  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

 <context:component-scan base-package="com.BeNnovo.EmployeesManagement"/>
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:conf/jdbc.properties</value>
</property>
</bean>

<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.BeNnovo.EmployeesManagement.coreCode.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<aop:config>
<aop:pointcut id="bussinessService"
expression="execution(public * com.BeNnovo.EmployeesManagement.coreCode.service..*.*(..))" />
<aop:advisor pointcut-ref="bussinessService"
advice-ref="txAdvice" />
</aop:config>

<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="exists" read-only="true" />
<tx:method name="add*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>



<bean id="employeesDAO" class="com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmployeesDAO"></bean>


<bean id="employeesService" class="com.BeNnovo.EmployeesManagement.coreCode.service.employeesManagerment.impl.EmployeesService">
<property name="employeesDAO">
<ref local="employeesDAO"/>
</property>
</bean>
<bean id="emloyeesLeaveDAO" class="com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmloyeesLeaveDAO"></bean>
<bean id="emloyeesLeaveService" class="com.BeNnovo.EmployeesManagement.coreCode.service.employeesManagerment.impl.EmloyeesLeaveService">
<property name="emloyeesLeaveDAO">
<ref local="emloyeesLeaveDAO"/>
</property>
</bean>


</beans>




public class TestEmployeesService
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
private EmployeesService employeesService = (EmployeesService) context.getBean("employeesService");

private int page = 1;
private int rows = 10;
private long total;
private long records;


@Test
public void createEmployees()
{
EmployeesDTO employeesDTO = new EmployeesDTO();
employeesDTO.setEmployeesName("admin");
employeesDTO.setEmployeesPassword("admin");
employeesDTO.setEmployeesIdentityCard("123434");
employeesDTO.setEmpoyeesMaritalStatus(EmployeesMaritalStatus.MARRIED);
employeesDTO.setEmployeesSex(EmployeesSex.MAN);
for (int i = 0; i < 50; i++)
{
employeesDTO.setEmployeesCode("B"+i);
employeesService.createEmployees(employeesDTO);
}

}

public EmployeesService getEmployeesService()
{
return employeesService;
}
@Resource
public void setEmployeesService(EmployeesService employeesService)
{
this.employeesService = employeesService;
}

}





public class TemplateDAOImpl<T> implements TemplateDAO<T>{

private HibernateTemplate hibernateTemplate;

public void save(T entity) throws DataAccessException {
hibernateTemplate.save(entity);
}


public HibernateTemplate getHibernateTemplate()
{
return hibernateTemplate;
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate)
{
this.hibernateTemplate = hibernateTemplate;
}
}



org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeesDAO' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)


at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ExceptionInInitializerError
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:21)
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.<clinit>(HibernateUtil.java:11)
at com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmployeesDAO.<clinit>(EmployeesDAO.java:21)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
... 39 more
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found
at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1453)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1475)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1011)
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16)
... 48 more

整合后为什么还要去找那个/hibernate.cfg.xml
我使用的是xml方式,原来用的是annotation方式

[解决办法]
你得配置怪怪。很亂。
給你一個,你參考一下。
最好是把dao,service,controller全用spring annotation配置。
要麽全部用xml,要麽全部用annotation。 特別是跟spring結合時候,將很多東西都交由spring來管理。

Java code
<context:annotation-config/>    <context:component-scan base-package="com.cybersoft4u.framework.domain"/>    <context:property-placeholder location="classpath:jdbc.properties"/>    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="${jdbc.driverClassName}"/>        <property name="url" value="${jdbc.url}"/>        <property name="username" value="${jdbc.username}"/>        <property name="password" value="${jdbc.password}"/>    </bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="annotatedClasses">            <list>                <!-- BASE -->                <value>com.cybersoft4u.framework.domain.SequenceNumberControl</value>                <value>com.cybersoft4u.framework.domain.BaseParameterItemDef</value>                <!-- EMP -->                <value>com.cybersoft4u.framework.domain.emp.Department</value>                <value>com.cybersoft4u.framework.domain.org.Department</value>                <value>com.cybersoft4u.framework.domain.emp.Employee</value>                <value>com.cybersoft4u.framework.domain.org.Employee</value>                <!-- PAM -->                <value>com.cybersoft4u.framework.domain.lfs.pam.CalendarLevDay</value>                <value>com.cybersoft4u.framework.domain.lfs.pam.CalendarWeekEnd</value>                <value>com.cybersoft4u.framework.domain.lfs.pam.LeaveType</value>                <value>com.cybersoft4u.framework.domain.lfs.pam.ExtraLeave</value>                <value>com.cybersoft4u.framework.domain.lfs.pam.ManageAgent</value>                <!-- LEA -->                <value>com.cybersoft4u.framework.domain.lfs.lev.LeaveAppForm</value>                <value>com.cybersoft4u.framework.domain.lfs.lev.LeaveAppFormLog</value>                <!-- STA  -->                <value>com.cybersoft4u.framework.domain.lfs.sta.DailyLog</value>                <!-- UMP -->                <value>com.cybersoft4u.framework.domain.upm.Function</value>                <value>com.cybersoft4u.framework.domain.upm.Role</value>                <value>com.cybersoft4u.framework.domain.upm.RoleRights</value>                <value>com.cybersoft4u.framework.domain.upm.UserRights</value>                <!-- PFM -->                <value>com.cybersoft4u.framework.domain.pfm.CRInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.FileUploadInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.LogDetailInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.LogInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.ProjectInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.ProjectUserInfo</value>                <value>com.cybersoft4u.framework.domain.pfm.WorksInfo</value>            </list>        </property>        <property name="hibernateProperties">            <props>                <prop key="javax.persistence.validation.mode">none</prop>                <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>                <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>                <prop key="hibernate.show_sql">false</prop>                <prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>                                                <prop key="hibernate.connection.release_mode">auto</prop>            </props>        </property>    </bean>    <!-- 事務管理 -->    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory" />    </bean>    <tx:advice id="txAdvice" transaction-manager="transactionManager">        <tx:attributes>            <tx:method name="*" propagation="REQUIRED"/>        </tx:attributes>    </tx:advice>    <tx:annotation-driven transaction-manager="transactionManager" />    <aop:config>        <aop:pointcut expression="execution(* com.cybersoft4u.framework.persistence..*.*(..)) and             execution(* com.cybersoft4u.framework.service..*.*(..))" id="allManagerMethod"/>        <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>    </aop:config> 


[解决办法]

探讨

我以前也是用annotation的方式,可是后来觉得他不好用了就换了xml的,可是换了就报错了。。。。。。。。我现在全用的都是xml的方式,没有用annnotation的方式。。。。为什么它老找hibernate.cfg.xml

[解决办法]
其实还是使用注解的方式好一点,配置文件里面东西也少了,代码看起来也干净了。

热点排行