论坛首页 Java企业应用论坛

spring+struts+hibernate升级hibernate2到3,出现找不到JD...

浏览 4624 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-10-18  
原来一个简单的测试例子,用spring 1.2 +struts1.1+hibernate 2编写

最近升级hibernate2到hibernate3,升级步骤为:

 make use of Hibernate metadata as well as Spring. Here's my list of
all the changes I had to make to run my application with HB3 on
WebLogic. This may repeat some of this information above and is not
meant to be exhaustive.

1.  global replace net.sf.hibernate to org.hibernate (be sure to include
the XML configuration files as well);
2.  global replace org.springframework.orm.hibernate to
org.springframework.orm.hibernate3 (be sure to include the XML
configuration files as well);
3.  global replace net.sf.hibernate.expression.Expression to
org.hibernate.criterion.Expression
4.  global replace net.sf.hibernate.expression.Order to
org.hibernate.criterion.Order
5.  convert method call getHibernateTemplate.getNamedQuery(Session sess,
String query); to session.getNamedQuery(String query);
6.  convert method call getHibernateTemplate();.createCriteria(session,
getReferenceClass();); to session.createCriteria(getReferenceClass(););
7.  Add new EntityMode.POJO parameter as follows to:
ClassMetadata.getPropertyValue(dest,
SkipFields.TCN.toString();.substring(1);, EntityMode.POJO);
8.  Add new EntityMode.POJO parameter as follows to:
classMetadata.getMappedClass(EntityMode.POJO);
9.  global replace HibernateProxyHelper.getClass(object); to
HibernateProxyHelper.getClassWithoutInitializingProxy(object);;
10.  Convert method call: propertyTypes.isPersistentCollectionType();); to
propertyTypes.isCollectionType(););
11.  Update the DTD as follows:
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
12.  Replace in the HBM files any instance of “<generator class=”vm” />
to of “<generator class=”native” />
13.  Add lazy=”false” to any class or association if you don’t use to use
lazy initialization. However, this is strongly discouraged and thus why
the default is now set to true.
14.  Caching is now enabled by default using the EHCache. If you want to
disable this, you must do this from the hibernate.cfg.xml. Again, this
is strongly discouraged.
15.  Remove all the previous versions of the .jars associated with
Hibernate and replace them with the new versions. 
 


升级完成以后编译通过。

可是在启动tomcat时候出现错误
2005-10-18 17:51:32,798 INFO [org.hibernate.cfg.Configuration] - processing foreign key constraints
2005-10-18 17:51:33,339 INFO [org.hibernate.connection.ConnectionProviderFactory] - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
2005-10-18 17:51:33,369 DEBUG [org.hibernate.util.JDBCExceptionReporter] - SQL Exception
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766);
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540);
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:80);
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72);
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463);
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004);
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:777);
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:703);
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1058);
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:363);
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226);
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147);
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:269);
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:318);
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134);
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:230);
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:156);
	at org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:81);
	at javax.servlet.GenericServlet.init(GenericServlet.java:211);
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044);
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:876);
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4017);
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337);
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083);
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:789);
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083);
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478);
	at org.apache.catalina.core.StandardService.start(StandardService.java:480);
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313);
	at org.apache.catalina.startup.Catalina.start(Catalina.java:556);
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method);
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39);
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25);
	at java.lang.reflect.Method.invoke(Method.java:585);
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287);
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425);
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854);
	at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721);
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319);
	at java.lang.Class.forName0(Native Method);
	at java.lang.Class.forName(Class.java:164);
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760);
	... 35 more
2005-10-18 17:51:33,369 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 0, SQLState: null
2005-10-18 17:51:33,369 ERROR [org.hibernate.util.JDBCExceptionReporter] - Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
2005-10-18 17:51:33,369 WARN [org.hibernate.cfg.SettingsFactory] - Could not obtain connection metadata
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766);
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540);
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:80);
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72);
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463);
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004);
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:777);
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:703);
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1058);
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:363);
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226);
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147);
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:269);
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:318);
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134);
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:230);
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:156);
	at org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:81);
	at javax.servlet.GenericServlet.init(GenericServlet.java:211);
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044);
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:876);
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4017);
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337);
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083);
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:789);
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083);
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478);
	at org.apache.catalina.core.StandardService.start(StandardService.java:480);
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313);
	at org.apache.catalina.startup.Catalina.start(Catalina.java:556);
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method);
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39);
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25);
	at java.lang.reflect.Method.invoke(Method.java:585);
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287);
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425);
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854);
	at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721);
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319);
	at java.lang.Class.forName0(Native Method);
	at java.lang.Class.forName(Class.java:164);
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760);
	... 35 more
2005-10-18 17:51:33,910 INFO [org.hibernate.dialect.Dialect] - Using dialect: org.hibernate.dialect.MySQLDialect
2005-10-18 17:51:33,920 INFO [org.hibernate.transaction.TransactionFactoryFactory] - Using default transaction strategy (direct JDBC transactions);


我可以确认 mysql的驱动jar已经包含在  \WEB-INF\lib 下面

相关配置文件为

&#65279;<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <!--由于没有将jsp文件隐藏到 WEB-INF 下,所以注销设置-->
  <!-- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
    <property name="prefix"><value>/WEB-INF/jsp/</value></property>
    <property name="suffix"><value>.jsp</value></property>
  </bean> -->

<!--设置数据库相关信息-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

  <property name="driverClassName">
    <value>com.mysql.jdbc.Driver</value>
  </property>

  <property name="url">
    <value>jdbc:mysql://127.0.0.1:3306/spring</value>
  </property>

  <property name="username">
    <value>root</value>
  </property>

  <property name="password">
    <value>mms</value>
  </property>
</bean>

<!--设定 管理 hibernate 的 session 信息-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
    <ref local="dataSource" />
  </property>

  <!--在此添加 hibernate 的 map文件-->
  <property name="mappingResources">
    <list>
      <value>com/jeedev/hb/TSysuser.hbm.xml</value>
    </list>
  </property>

  <property name="hibernateProperties">
    <props>
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
      <prop key="hibernate.show_sql">true</prop>
    </props>
  </property>
</bean>

<!--使用 Hibernate 的 事务-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
    <ref local="sessionFactory" />
  </property>
</bean>


<!-- Spring的数据访问异常转换器(Data Access Exception Translator)定义 -->
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
  <property name="dataSource">
    <ref bean="dataSource" />
  </property>
</bean>

<!-- Hibernate Template定义 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  <property name="sessionFactory">
    <ref bean="sessionFactory" />
  </property>
  <property name="jdbcExceptionTranslator">
    <ref bean="jdbcExceptionTranslator" />
  </property>
</bean>

<!--baseTransactionProxy -->
<bean  id="baseTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
    <ref bean="transactionManager" />
  </property>
  <property name="transactionAttributes">
    <props>
      <prop key="save*">PROPAGATION_REQUIRED</prop>
      <prop key="update*">PROPAGATION_REQUIRED</prop>
      <prop key="find*">PROPAGATION_REQUIRED</prop>
      <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
  </property>
</bean>

<!--sessionFactory 提供给  org.springframework.orm.hibernate3.support.HibernateDaoSupport 使用-->
<bean id="userDao" class="com.jeedev.service.dao.hibernate.UserHibernateDao">
  <property name="sessionFactory">
    <ref local="sessionFactory" />
  </property>
</bean>

<bean id="userManagerTarget" class="com.jeedev.service.spring.UserManagerImpl">
  <property name="userDao">
    <ref local="userDao" />
  </property>
</bean>


<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
    <ref bean="transactionManager" />
  </property>

  <property name="target">
    <ref local="userManagerTarget" />
  </property>

  <property name="proxyTargetClass">
    <value>true</value>
  </property>
  <property name="transactionAttributes">
    <props>
      <prop key="save*">PROPAGATION_REQUIRED</prop>
      <prop key="find*">PROPAGATION_REQUIRED</prop>
      <prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
      <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
  </property>
</bean>

</beans>

  
   发表时间:2005-10-18  

<!--设置数据库相关信息-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

修改为:

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


具体原因我不知道?那个大人能解释一下。为什么上面的在 hibernate2没有问题?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics