浏览 4624 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-10-18
最近升级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 下面 相关配置文件为 <?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> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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没有问题? |
|
返回顶楼 |