开发明细原创、问题和hibernate3与4的区别转载

struts2+hibernate4+spring3

1  开发步骤:

jar包链接:

http://download.csdn.net/detail/kinbridge/9425213

1.1    工程结构

1.2     创建表插入测试数据;

create table A_USER

(

  userid   NUMBER(10) not null primary key,

  username NVARCHAR2(20) not null,

  pass     NVARCHAR2(500) not null

)

 

INSERT INTO A_USER(userid,username,pass) VALUES(1,'a1','123456');

INSERT INTO A_USER(userid,username,pass) VALUES(2,'a2','123456');

COMMIT;

1.3     jdbc.properties

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver

jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.username =accp

jdbc.password=123456 

proxool.maxConnCount=10

proxool.minConnCount=2

proxool.simultaneousBuildThrottle=60000

1.4     增加实体类和配置文件

第一种:使用注解

User.java

package com.struts.bean;

 

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name = "A_USER")

public class User {

   @Id

   private int userId;

  

   @Column(name = "USERNAME")

   private String username;

  

   @Column(name = "PASS")

   private String userpwd;

 

   public int getUserId() {

      return userId;

   }--省略set和get方法

}

 

 

第二种:或者实体类+配置文件

User.java

 

public class User {

  

   private int userId;

   private String username;

   private String userpwd;

--省略set和get方法

 

user-hbn.xml

 

<?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 package=" com.struts.bean">

   <class name="user" table="a_user">

      <id name="id" column="userId">

         <generator class="assigned" />

      </id>

      <property name="username" column="username"></property>

      <property name="PASS" column="pass"></property>

 

</hibernate-mapping>

 

 

1.5     数据访问层接口和实现类

接口UserDao.java

 

package com.struts.dao;

 

import java.util.List;

import com.struts.bean.User;

 

public interface UserDao {

   public List<User> queryAllUsers();

 

   boolean saveUser(User user);

   public String  rturnTest() ;

}

 

 

实现类:UserDaoImpl.java

 

//@Repository("UserDao")

public class UserDaoImpl implements UserDao {

   //@Autowired

   private SessionFactory sessionFactory;

 

 

  

   public void setSessionFactory(SessionFactory sessionFactory) {

      this.sessionFactory = sessionFactory;

   }

  

   public Session getCurrentSession() {

        return sessionFactory.getCurrentSession();// 增删改使用的session

    }

  

   public Session qryCurrentSesion() {

        return sessionFactory.openSession();// 查询使用的session

    }

  

   @Override

   public List<User> queryAllUsers() {

      // TODO Auto-generated method stub

      return null;

   }

  

   public String  rturnTest() {

      // TODO Auto-generated method stub

      return  "rturnTest";

   }

 

 

   @Test

   public void saveUserTest() {

      System.out.println("11111");

       @SuppressWarnings("resource")

      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

       sessionFactory = (SessionFactory)context.getBean("sessionFactory");

      System.out.println("1111111111111111111111111111111"+sessionFactory);

      Session session = sessionFactory.getCurrentSession();

     

      System.out.println("2"+session);

   }

  

 

   public boolean saveUser(User user) {

      Session session = getCurrentSession();

      Transaction tx = session.beginTransaction();

      try {

         session.save(user);

         tx.commit();

         return true;

      } catch (Exception e) {

         if (e != null) {

            tx.rollback();

         }

      }

      return false;

   }

}

 

 

 

1.6     业务逻辑层接口和实现类:

UserService.java

public interface UserService {

   public List<User> queryAllUsers();

 

   boolean saveUser(User user);

}

 

UserServiceImpl.java

public class UserServiceImpl implements UserService {

  

   //@Autowired

   private UserDao userDao;

 

   public UserDao getUserDao() {

      return userDao;

   }

 

   public void setUserDao(UserDao userDao) {

      this.userDao = userDao;

   }

 

   @Override

   public List<User> queryAllUsers() {

      return userDao.queryAllUsers();

   }

 

   @Override

   public boolean saveUser(User user) {

      System.out.println(userDao);

      System.out.println("user-->"+user.getUserId());

      return userDao.saveUser(user);

   }

 

}

 

 

 

1.7     控制器action

 

SaveUserAction.java

public class SaveUserAction extends ActionSupport implements SessionAware{

 

 

   private static final long serialVersionUID = 1L;

 

   private UserService userService;

  

   //---------------〉使用已存在的实体对象   页面命名为:user.userId :对象.属性

   private User user;

   public User getUser() {

      return user;

   }

 

   public void setUser(User user) {

      this.user = user;

   }

   //----------------->停止

  

   public UserService getUserService() {

      return userService;

   }

 

   public void setUserService(UserService userService) {

      this.userService = userService;

   }

  

  

 

 

   /*<!-- 第一种 --> 不使用已存在的实体对象

    * private String username;

   private String userpwd;

   private Integer userid;

     

   public Integer getUserid() {

      return userid;

   }

 

   public void setUserid(Integer userid) {

      this.userid = userid;

   }

  

   public String getUsername() {

      return username;

   }

 

   public void setUsername(String username) {

      this.username = username;

   }

 

   public String getUserpwd() {

      return userpwd;

   }

 

   public void setUserpwd(String userpwd) {

      this.userpwd = userpwd;

   }

 

*/

   public String saveUser() throws Exception {

 

   /* 不使用已存在的实体对象

    * User user = new User();

      user.setUserId(this.getUserid());

      user.setUsername(this.getUsername());

      user.setUserpwd(this.getUserpwd());*/

      System.out.println("------>"+user.getUserId());

      boolean status = userService.saveUser(user);

      System.out.println("保存成功"+status);

      return SUCCESS;

   }

 

   @Override

   public void setSession(Map<String, Object> arg0) {

      // TODO Auto-generated method stub  

   }

 

 

}

 

 

1.8     spring配置文件

注意:实际开发Dao层、services层根据模块分开

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"

   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-3.2.xsd

   http://www.springframework.org/schema/context

   http://www.springframework.org/schema/context/spring-context-3.2.xsd

   http://www.springframework.org/schema/aop

   http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

   http://www.springframework.org/schema/tx

   http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

  

      <!-- 自动扫描所有注解该路径 --> 

    <context:component-scan base-package="com.struts.*,com.struts.*.*" />

  

   <!-- 数据库连接 -->

      <!-- 引入jdbc.properties文件 --> 

      <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

          <property name="locations"> 

              <list> 

                  <value>classpath:jdbc.properties</value> 

              </list> 

          </property> 

      </bean>  

      <bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"> 

          <property name="targetDataSource"> 

              <bean class="org.logicalcobwebs.proxool.ProxoolDataSource"> 

                  <property name="driver" value="${jdbc.driverClassName}" /> 

                  <property name="driverUrl" value="${jdbc.url}" /> 

                  <property name="user" value="${jdbc.username}" /> 

                  <property name="password" value="${jdbc.password}"></property> 

                  <property name="maximumConnectionCount" value="${proxool.maxConnCount}" /> 

                  <property name="minimumConnectionCount" value="${proxool.minConnCount}" /> 

                  <property name="simultaneousBuildThrottle" value="${proxool.simultaneousBuildThrottle}" /> 

              </bean> 

          </property> 

      </bean>

  

   <!--HibernateSpring配置 -->

 

   <bean id="sessionFactory"

    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >

               <!-- 数据库连接 -->

       <property name="dataSource" ref="dataSource" />

          

            <!-- hibernate自身属性 -->         

         <property name="hibernateProperties">

            <props>

                <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>

                <prop key="hibernate.show_sql">true</prop>

                <prop key="hibernate.format_sql">true</prop>

                <prop key="hibernate.hbm2ddl.auto">update</prop>

                <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>

               

                <!-- 解决no session found -->

                <prop key="hibernate.current_session_context_class">thread</prop>

  

               

             <!--Spring 3.x Hibernate 4.x 不提供 HibernateDaoSupport,所以在dao的实现层注入SessionFactory -->

                <!-- <prop key="hibernate.current_session_context_class">

                org.springframework.orm.hibernate4.SpringSessionContext

                </prop> -->

                        

            </props>

         </property>

                 <!-- 映射文件 -->

         <property name="annotatedClasses">

            <list>

                <value>com.struts.bean.User</value>

            </list>

         </property>

    </bean>

     

   <!-- 用户Dao -->

    <bean id="userDao" class="com.struts.dao.impl.UserDaoImpl" scope="prototype">

      <property name="sessionFactory">

          <ref local="sessionFactory" />

      </property>

   </bean>

 

   <!-- 用户Service -->

   <bean id="userService" class="com.struts.service.impl.UserServiceImpl" scope="prototype">

      <property name="userDao">

          <ref local="userDao" />

      </property>

   </bean>

   <!-- struts2交给spring管理 -->

   <bean id="SaveUserAction" class="com.struts.action.SaveUserAction" scope="prototype">

      <property name="userService" ref="userService"></property>

   </bean>

  

   <!--hibernate4必须配置为开启事务否则 getCurrentSession()获取不到-->      

    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory" />

    </bean>

    <!-- 事物通知 -->

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

        <tx:attributes>

            <tx:method name="sav*" propagation="REQUIRED" rollback-for="Exception"/> <!-- rollback-for回滚事物,果存在一个事务,则支持当前事务。如果没有事务则开启  -->

            <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>

            <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>

            <tx:method name="upd*" propagation="REQUIRED" rollback-for="Exception"/>

            <tx:method name="qry*" propagation="NOT_SUPPORTED" read-only="true"/>

            <tx:method name="*" propagation="NOT_SUPPORTED" read-only="true"/>

        </tx:attributes> 

    </tx:advice>

</beans>

 

 

 

1.9     struts2配置文件

Struts.xml

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.i18n.encoding" value="utf-8"></constant>

 

   <package name="default" namespace="/" extends="struts-default">           

      <action name="SaveUserAction" class="SaveUserAction" method="saveUser">

         <result name="success">/Test.jsp</result>

      </action>

   </package>

</struts>

 

 

1.10        web.xml

<web-app version="3.0"

   xmlns="http://java.sun.com/xml/ns/javaee"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <display-name></display-name>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

 

   <!-- 创建spring工厂监听器 -->

   <listener>

      <listener-class>

         org.springframework.web.context.ContextLoaderListener

      </listener-class>

   </listener>

 

   <!-- 告知spring context config location 的存储位置 -->

   <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:applicationContext.xml</param-value>

   </context-param>

  

   <!-- 防止spring内存溢出监听器 -->

     <listener>

        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

    </listener>

   

    <!-- openSessionInView配置 -->

    <filter>

        <filter-name>openSessionInViewFilter</filter-name>

         <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

         <init-param>

             <param-name>singleSession</param-name>

             <param-value>true</param-value>

         </init-param>

     </filter>

     <filter-mapping>

         <filter-name>openSessionInViewFilter</filter-name>

         <url-pattern>*.action</url-pattern>

     </filter-mapping>

   

 

   <!-- struts2拦截器 -->

     <filter>

  <filter-name>struts</filter-name>

  <filter-class>

      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

  </filter-class>

     </filter>

     <filter-mapping>

     <filter-name>struts</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>

</web-app>

 

 

1.11       页面(表现层)

addUser.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

   <form action="SaveUserAction.action" method="post">

  

   <!-- 第一种 -->

   <!-- 序号<input type="text" name="userid"/><hr/>

   用户名<input type="text"  name="username"/><hr/>

   密码<input type="password" name="userpwd" ><hr/>

   <input type="submit" value="save"/> -->

  

    序号<input type="text" name="user.userId"/><hr/>

   用户名<input type="text"  name="user.username"/><hr/>

   密码<input type="password" name="user.userpwd" ><hr/>

   <input type="submit" value="save"/>

   </form>

</body>

</html>

 

 

 

 

 

 

 

 

 

2  hibernate3和hibernate4的区别

 

ibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了。这里简单介绍了hibernate4相对于hibernate3配置时出现的错误,只列举了问题和解决方法,详细原理如果大家感兴趣还是去自己搜吧,网上很多。

 

 

2.1    Spring3.1去掉了HibernateDaoSupport类。hibernate4需要通过getCurrentSession()获取session。并且设置

    <propkey="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>

    (在hibernate3的时候是threadjta)。

 

2.2    缓存设置改为<prop

key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>

                   <propkey="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>

 

2.3    Spring对hibernate的事务管理,不论是注解方式还是配置文件方式统一改为:

    <bean id="txManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager">  

    <property name="sessionFactory"><refbean="sessionFactory"/>

    </property> 

    </bean>

 

2.4    getCurrentSession()事务会自动关闭,所以在有所jsp页面查询数据都会关闭session。要想在jsp查询数据库需要加入:

   org.springframework.orm.hibernate4.support.OpenSessionInViewFilter过滤器。

 

    Hibernate分页出现 ResultSet mayonly be accessed in a forward direction 需要设置hibernate结果集滚动

     <propkey="jdbc.use_scrollable_resultset">false</prop>

 

--------------------------------------------------------------------

找到篇好文章,我之前遇到的问题都在这都能找到。其实出现这些问题的关键就是hibernate4hibernate3出现了session管理的变动。

spring也作出相应的变动....

2.5        可能的错误和解决办法

错误1java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider

原因:springsessionfactorytransactionmanager与支持hibernate3时不同。

解决:

 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

...

</bean>

 

 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

 

 

错误2java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session

原因:hibernate4之后,spring31HibernateDaoSupport去除,包括数据访问都不需要hibernatetemplate,这意味着dao需要改写,直接使用hibernatesessionquery接口。

解决:为了改写dao,足足花了一天时间,然后一个个接口进行单元测试,这是蛋疼的一个主要原因。

 

错误3nested exception is org.hibernate.HibernateException: No Session found for current thread

原因:发现一些bean无法获得当前session,需要把之前一些方法的事务从NOT_SUPPORT提升到required,readonly=true

https://jira.springsource.org/browse/SPR-9020 http://www.iteye.com/topic/1120924

解决:

 

<tx:advice id="baseServiceAdvice" transaction-manager="transactionManager">

   <tx:attributes>

      <tx:method name="get*" read-only="true" propagation="REQUIRED"/><!--之前是NOT_SUPPORT-->

      <tx:method name="find*" read-only="true" propagation="REQUIRED"/><!--之前是NOT_SUPPORT-->

      <tx:method name="save*" propagation="REQUIRED"/>

      <tx:method name="update*" propagation="REQUIRED"/>

      <tx:method name="remove*" propagation="REQUIRED"/>

      <tx:method name="add*" propagation="REQUIRED"/>

      <!--默认其他方法都是REQUIRED-->

      <tx:method name="*"/>

   </tx:attributes>

</tx:advice>

 

 

错误4:与错误3报错类似,java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

        at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:324) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]

        at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:202) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]

        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

 

原因:因为opensessioninview filter的问题,如果你的配置还是hibernate3,需要改为hibernate4 

<filter>

    <filter-name>openSessionInViewFilter</filter-name>

   <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

</filter>

 

--------------------------------------------------------------------

由于Hibernate4已经完全可以实现事务了, Spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以Spring3.1里已经不提供Hibernatedaosupport,HibernateTemplete了,只能用Hibernate原始的方式用session:

        Session session = sessionFactory.openSession();

        Session session = sessionFactory.getCurrentSession();

basedao里可以用注入的sessionFactory获取session.

注意配置事务的时候必须将父类baseServiceImpl也配上,要不然会出现错误:No Session found for currentthread, 以前是不需要的

SessionFactory.getCurrentSession()的后台实现是可拔插的。因此,引入了新的扩展接口 (org.hibernate.context.spi.CurrentSessionContext)

新的配置参数(hibernate.current_session_context_class),以便对什么是当前session”的范围和上下文(scope and context)的定义进行拔插。

 

Spring @Transactional声明式事务管理,”currentSession”的定义为当前被 Spring事务管理器 管理的Session,此时应配置:

hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

 

此处一定注意 使用 hibernate4,在不使用OpenSessionInView模式时,在使用getCurrentSession()时会有如下问题: 当有一个方法list 传播行为为Supports,当在另一个方法getPage()(无事务)调用list方法时会抛出org.hibernate.HibernateException: No Session found for current thread 异常。 这是因为getCurrentSession()在没有session的情况下不会自动创建一个,不知道这是不是Spring3.1实现的bug 因此最好的解决方案是使用REQUIRED的传播行为。

 

标签太多了,转自http://hi.baidu.com/austincao/item/fc9907da3d854e44fa576861

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3  jar包时问题汇总及解决办法

连接地址:本文整理如下

http://www.hongyanliren.com/2014m11/18835.html

3.1      NoClassDefFoundError

1.java.lang.NoClassDefFoundError:org/objectweb/asm/ClassVisitor

缺少asm-3.3.jar

2.java.lang.NoClassDefFoundError:org/objectweb/asm/commons/EmptyVisitor

缺少asm-commons-3.3.jar

3.java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory

问题及解决办法:缺少commons-logging.jar,需要在lib中添加。

4.NoClassDefFoundError:org/logicalcobwebs/cglib/core/NamingPolicy

问题及解决办法:默认hibernate4下连接池jar包为较老的proxool-0.8.3.jar。需要换成proxool-0.9.1.jarproxool-cglib.jar

 

3.2      ClassNotFoundException

1.java.lang.ClassNotFoundException:org.springframework.web.util.Log4jConfigListener

缺少spring-web-3.2.3.RELEASE.jar

2.java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

缺少spring-web-3.2.3.RELEASE.jar

3.java.lang.ClassNotFoundException:org.springframework.web.context.request.RequestContextListener

缺少spring-web-3.2.3.RELEASE.jar

4.java.lang.ClassNotFoundException:org.springframework.web.util.IntrospectorCleanupListener

缺少spring-web-3.2.3.RELEASE.jar

5.Caused by:java.lang.ClassNotFoundException: org.springframework.beans.FatalBeanException

缺少spring-beans-3.2.3.RELEASE.jar

6.Caused by:java.lang.ClassNotFoundException: org.springframework.core.NestedRuntimeException

缺少spring-core-3.2.3.RELEASE.jar

3.3      BeanDefinitionParsingException

1.org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configuration problem: Unable to locate Spring NamespaceHandler for XML schemanamespace [http://www.springframework.org/schema/tx]

缺少spring-tx-3.2.3.RELEASE.jar

2.org.springframework.beans.factory.BeanDefinitionStoreException:Unexpected exception parsing XML document from class path resource[resource/applicationContext.xml]; nested exception isjava.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

缺少aopalliance-1.0.jar

3.  org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configuration problem: Unable to locate Spring NamespaceHandler for XML schemanamespace [http://www.springframework.org/schema/aop]

缺少spring-aop-3.2.3.RELEASE.jar

 

3.4      BeanCreationException

1.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘dataSource’ defined in class path resource[resource/applicationContext.xml]: BeanPostProcessor before instantiation ofbean failed; nested exception isorg.springframework.beans.factory.BeanCreationException: Error creating beanwith name‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0′: Cannotresolve reference to bean ‘pointcut’ while setting bean property ‘pointcut’;nested exception is org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘pointcut’: Instantiation of bean failed; nestedexception is java.lang.NoClassDefFoundError:org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException

缺少spring-aspects-3.2.3.RELEASE.jaraspectjweaver.jaraspectjrt.jar

 

2.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’defined in class path resource [resource/applicationContext.xml]: Invocation ofinit method failed; nested exception is java.lang.NoClassDefFoundError:org/hibernate/annotations/common/reflection/ReflectionManager

缺少hibernate-commons-annotations-4.0.2.Final.jar

3.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException

缺少dom4j-1.6.1.jar

4.org.springframework.beans.factory.BeanCreationException: Error creatingbean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger

缺少jboss-logging-3.1.1.GA.jar

5.  org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is java.lang.NoClassDefFoundError: javax/transaction/SystemException

缺少jboss-transaction-api_1.1_spec-1.0.1.Final.jar

6.  org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is java.lang.NoClassDefFoundError: javax/persistence/Entity

缺少hibernate-jpa-2.0-api-1.0.1.Final.jar

7.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is org.hibernate.cache.NoCacheRegionFactoryAvailableException:Second-level cache is used in the application, but property hibernate.cache.region.factory_classis not given, please either disable second level cache or set correct regionfactory class name to property hibernate.cache.region.factory_class (and makesure the second level cache provider, hibernate-infinispan, for example, is availablein the classpath).

hibernate.cfg.xml配置中需添加:

<propertyname=”hibernate.cache.use_second_level_cache”>true</property>

<propertyname=”hibernate.cache.provider_class”>net.sf.ehcache.hibernate.EhCacheProvider</property>

<property name=”hibernate.cache.region.factory_class”>org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

8.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]: Invocation of init method failed; nestedexception is java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

缺少slf4j-api-1.6.1.jar

9.org.springframework.beans.factory.BeanCreationException:Error creating bean with name ‘transactionManager’ defined in class pathresource [resource/applicationContext.xml]: Invocation of init method failed;nested exception is java.lang.NoClassDefFoundError:org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy

缺少spring-jdbc-3.2.3.RELEASE.jar

10.Caused by:Cannot locate the chosen ObjectFactory implementation: spring – [unknownlocation]

缺少struts2-spring-plugin-2.3.15.jar

3.5     CannotLoadBeanClassException

1..org.springframework.beans.factory.CannotLoadBeanClassException:Cannot find class [org.springframework.orm.hibernate4.LocalSessionFactoryBean]for bean with name ‘sessionFactory’ defined in class path resource[resource/applicationContext.xml]; nested exception isjava.lang.ClassNotFoundException:org.springframework.orm.hibernate4.LocalSessionFactoryBean

缺少spring-orm-3.2.3.RELEASE.jar

update [0];actual row count: 0; expected: 1

 

2.org.logicalcobwebs.proxool.ShutdownHook– Problem calling “get cause” on IllegalStateException.

问题及解决办法:默认hibernate4下连接池jar包为较老的proxool-0.8.3.jar。需要换成proxool-0.9.1.jarproxool-cglib.jar

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值