2014-07-05 65 views
1

我在這裏試圖整合春季休眠。這是我試圖運行的簡單例子。我在運行時出錯]善意幫助。我有麻煩設置春季休眠application-context.xml

EmployeeDAO.java

package com.spring.hibernate.dao; 

import com.spring.hibernate.bean.EmployeeBean; 
import org.springframework.orm.hibernate3.HibernateTemplate; 

public class EmployeeDAO { 
    HibernateTemplate template; 

    public void setTemplate(HibernateTemplate template) { 
     this.template = template; 
    } 

    public void saveEmployee(EmployeeBean e){ 
     template.save(e); 
    } 

    public void deleteEmployee(EmployeeBean e){ 
     template.delete(e); 
    } 

    public void updateEmployee(EmployeeBean e){ 
     template.update(e); 
    } 
} 

EmployeeBean.java

package com.spring.hibernate.bean; 


public class EmployeeBean { 
    private int emp_id,emp_age; 

    public int getEmp_id() { 
     return emp_id; 
    } 

    public void setEmp_id(int emp_id) { 
     this.emp_id = emp_id; 
    } 

    public int getEmp_age() { 
     return emp_age; 
    } 

    public void setEmp_age(int emp_age) { 
     this.emp_age = emp_age; 
    } 

    public String getEmp_name() { 
     return emp_name; 
    } 

    public void setEmp_name(String emp_name) { 
     this.emp_name = emp_name; 
    } 

    public String getEmp_address() { 
     return emp_address; 
    } 

    public void setEmp_address(String emp_address) { 
     this.emp_address = emp_address; 
    } 

    public float getEmp_salary() { 
     return emp_salary; 
    } 

    public void setEmp_salary(float emp_salary) { 
     this.emp_salary = emp_salary; 
    } 
    private String emp_name, emp_address; 
    private float emp_salary; 
} 

SpringHibernateConsoole.java

package spring.hibernate.console; 

import com.spring.hibernate.bean.EmployeeBean; 
import com.spring.hibernate.dao.EmployeeDAO; 
import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.core.io.Resource; 

public class SpringHibernateConsole { 


    public static void main(String[] args) { 

     Resource res = new ClassPathResource("applicationContext.xml"); 

     BeanFactory beanFactory = new XmlBeanFactory(res); 

     EmployeeDAO dao = (EmployeeDAO)beanFactory.getBean("d"); 

     EmployeeBean emp = new EmployeeBean(); 
     emp.setEmp_id(23); 
     emp.setEmp_name("amit"); 
     emp.setEmp_salary(15224); 
     emp.setEmp_address("Ramakrishrna apratment new delhi"); 
     dao.saveEmployee(emp); 

    } 

} 

applicationContext.xml

<?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:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 


    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="dirverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property> 
     <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=BFPL;instanceName=SQLEXPRESS;"></property> 
     <property name="username" value="appuser" ></property> 
     <property name="password" value="commando"></property> 
    </bean> 

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource"></property> 
     <property name="mappingResources"> 
      <list> 
       <value>employee.hbm.xml</value> 
      </list> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 

    </bean> 

    <bean id="myTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
     <property name="sessionFactory" ref="mySessionFactory"></property> 

    </bean> 

    <bean id="d" class="com.spring.hibernate.dao.EmployeeDAO"> 
     <property name="template" ref="myTemplate"></property> 
    </bean> 

</beans> 

employee.hbm

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="com.spring.hibernate.bean.EmployeeBean"> 
     <id name="emp_id"> 
      <generator class="assigned"></generator> 
     </id> 
     <property name="emp_name"></property> 
     <property name="emp_salary"></property> 
     <property name="emp_address"></property> 
     <property name="emp_age"></property>  
    </class> 

</hibernate-mapping> 

error : (Updated)

run: 
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). 
log4j:WARN Please initialize the log4j system properly. 
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'd' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'myTemplate' while setting bean property 'template'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mySessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:326) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1417) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at spring.hibernate.console.SpringHibernateConsole.main(SpringHibernateConsole.java:19) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mySessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:326) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1417) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:320) 
    ... 10 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:320) 
    ... 20 more 
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
    at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47) 
    at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30) 
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24) 
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) 
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144) 
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116) 
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108) 
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104) 
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69) 
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:107) 
    at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162) 
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55) 
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56) 
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:269) 
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:425) 
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109) 
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:863) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:782) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) 
    ... 27 more 
Java Result: 1 
BUILD SUCCESSFUL (total time: 8 seconds) 

回答

1

看起來你缺少應用程序中的一些hibernate依賴關係。我雖然建議你保留hibernate.cfg.xml文件中的hibernate屬性,而不是在application-context.xml中。如果它解決了你的問題。

+0

Thansk的回覆,我使用的是Spring框架3.2.7,和hibernate3.jar是我用來創建控制檯Java應用程序與hibernate示例相同的jar文件,但沒有與這個。 – kecy

+1

添加所有必需的jar和依賴關係。 –

+0

感謝您的回覆。我已經包含了所需的jar。請在此處https://drive.google.com/file/d/0B1JsFHtBqxS8VnRGdFNaU2RlWkU/edit?usp=共享,右鍵單擊並在新選項卡中打開。 – kecy

0

在您的類路徑中添加apache commons-dbcp.jar。

Spring無法找到類org.apache.commons.dbcp.BasicDataSource。

+0

好吧..我把jar文件sittle gettilntg錯誤。由於:org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[applicationContext.xml]中定義的名稱爲'myTemplate'的bean時出錯:設置bean屬性'sessionFactory'時無法解析對bean'mySessionFactory'的引用。嵌套的異常是 – kecy

+0

@kecy可以請你分享嵌套的異常,你得到 – Bhushan

+0

請不要建議任何特定的jar作爲hibernet需要多個依賴項。在其網站上提及@kecy hibernet依賴關係。只需驗證。看起來你會一切設置。 – Ketan