У меня проблемы с настройкой spring hibernate application-context.xml

#java #spring #hibernate

#java #spring #переход в спящий режим

Вопрос:

Я здесь пытаюсь интегрировать spring hibernate. это простой пример, который я пытаюсь запустить. я получаю сообщение об ошибке при запуске] пожалуйста, помогите.

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>
  

ошибка: (обновлено)

 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 в hibernate.cfg.xml файл, а не в application-context.xml . Если это решит вашу проблему.

Комментарии:

1. Спасибо за ответ, я использую spring Framework 3.2.7 и hibernate3.jar те же файлы jar, которые я использовал для создания консольного Java-приложения с примером hibernate, но не с этим.

2. Добавьте все необходимые jar вместе с зависимостями.

3. спасибо за ответ. Я уже включил требуемый jar. пожалуйста, проверьте здесь drive.google.com/file/d/0B1JsFHtBqxS8VnRGdFNaU2RlWkU / … , щелкните правой кнопкой мыши и откройте в новой вкладке.

4. Нет, пожалуйста, смотрите обновленный stacktrace, он все еще выдает исключения.

5. Я думаю, у вас несовместимость между версией ASM, требуемой Hibernate, и той, которая требуется spring. В любом случае вам не нужен asm. Попробуйте удалить его.

Ответ №2:

Добавить apache commons-dbcp.jar в вашем classpath.

Spring не может найти класс org.apache.commons.dbcp.BasicDataSource.

Комментарии:

1. хорошо .. я обнаружил ошибку gettilntg в файле jar sittle. Вызвано: org.springframework.beans.factory. Исключение BeanCreationException: ошибка при создании компонента с именем ‘MyTemplate’, определенным в ресурсе пути к классу [applicationContext.xml ]: Не удается разрешить ссылку на компонент ‘mySessionFactory’ при настройке свойства компонента ‘SessionFactory’; вложенное исключение

2. @kecy не могли бы вы, пожалуйста, поделиться вложенным исключением, которое вы получаете

3. Пожалуйста, не предлагайте какой-либо конкретный jar, поскольку для hibernet требуется несколько зависимостей. зависимости @kecy hibernet упоминаются на его веб-сайте. Просто проверьте. Похоже, у вас все будет готово.

4. @Bhushan, это скриншот библиотек, включенных в проект. drive.google.com/file/d/0B1JsFHtBqxS8VnRGdFNaU2RlWkU / … щелкните правой кнопкой мыши и откройте вкладку net.

5. @kecy попробуйте добавить с помощью двух jar commons-dbcp-1.4.jar и commons-pool-1.5.4.jar (этот jar не является их изображением) и удалите jar org.apache.commons.dbcp.jar