Hibernate与Spring结合

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

Hibernate+Spring多数据库解决方案

Hibernate+Spring多数据库解决方案

Hibernate+Spring多数据库解决方案我以前在项目中的探索和实践,写出来与大家分享。

大家有其他好的方式,也欢迎分享。

环境:JDK 1.4.x , Hibernate 3.1, Spring 2.0.6, JBOSS4.0, 开发模式: Service + DAO我们项目中需要同时使用多个数据库. 但 Hibernate 不能直接支持,为此我们对比了网上网友的方案,自己做了一点探索。

1. Demo需求我们的项目使用一个全省的公共库加十多个地市库的架构。

本文主要说明原理,将需求简化为两库模型。

主库:User管里,主要是系统管理,鉴权等数据;订单库:Order 管理,存放订单等业务性数据。

2. 原理:1) Hibernate 的每个配置文件对应一个数据库,因此多库需要做多个配置文件。

本文以两个为例:主库 hibernate_sys.cfg.xml,订单库 hibernate_order.cfg.xml每个库,Hibernate 对应一个 sessionFactory 实例,因此Hibernate 下的多库处理,就是在多个 sessionFactory 之间做好路由。

2) sessionFactory 有个 sessionFactory.getClassMetadata(voClass) 方法,返回值不为空时,表示该 VO 类在该库中(hbm.xml文件配置在了对应的hibernate.cfg.xml中),该方法是数据路由的核心和关键所在。

因此, User.hbm.xml 配置在 hibernate_sys.cfg.xml ,Order数据位于配置到 hibernate_order.cfg.xml3)多库处理时,需要使用 XA 事务管理。

本例中使用 Jboss4.0 来做JTA事务管理;用JOTM,其他应用服务器原理相同。

3. 实现1)为做多 sessionFactory 实例的管理,设计 SessionFactoryManager 类,功能就是做数据路由,控制路由的核心是 sessionFactoryMap 属性,它按dbFlag=sessionFactory 的方式存储了多个库的引用。

spring4.x + hibernate4.x 配置详解

spring4.x + hibernate4.x 配置详解

spring4.x + hibernate4.x 配置详解关于spring和hibernate的使用以及特征等等,在此不再啰嗦,相信大家也都知道,或者去搜索一下即可。

本篇博文的内容主要是我最近整理的关于spring4.x 和hibernate 4.x 相关配置和使用方式,当然spring3.x以及hibernate4.x也可以借鉴。

首先是配置文件web.xml 增加以下代码即可<!-- 加载spring相关的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/applicationContext.xml</param-value> </context-param><!-- 启用spring监听--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</l istener-class></listener>然后建立 applicationContext.xml 文件,src下。

文件内容如下,注释我尽量写的很详细<beans xmlns:xsi="/2001/XMLSchema-instance"xmlns="/schema/beans"xmlns:aop="http://ww /schema/aop"xmlns:context="/schema/context"xmlns:tx="ht tp:///schema/tx"xmlns:cache="/schema/cache"xmlns:p="http:// /schema/p"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd/schema/cache http://www.springframewor /schema/cache/spring-cache-4.0.xsd"><!-- 引入properties文件--><context:property-placeholder location="classpath*:/appConfig.properties"/> <!-- 定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用--> <bean id="dataSource"class="boPooledDataSourc e"destroy-method="close"><!-- 设置JDBC驱动名称--><property name="driverClass"value="${jdbc.driver}"/><!-- 设置JDBC连接URL --><property name="jdbcUrl"value="${jdbc.url}"/><!-- 设置数据库用户名--><property name="user"value="${ername}"/><!-- 设置数据库密码--><property name="password"value="${jdbc.password}"/><!-- 设置连接池初始值--><property name="initialPoolSize"value="5"/></bean><!-- 配置sessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- 数据源--><property name="dataSource"ref="dataSource"/><!-- hibernate的相关属性配置--><property name="hibernateProperties"><value><!-- 设置数据库方言-->hibernate.dialect=org.hibernate.dialect.MySQLDialect<!-- 设置自动创建|更新|验证数据库表结构-->hibernate.hbm2ddl.auto=update<!-- 是否在控制台显示sql -->hibernate.show_sql=true<!-- 是否格式化sql,优化显示-->hibernate.format_sql=true<!-- 是否开启二级缓存-->e_second_level_cache=false<!-- 是否开启查询缓存-->e_query_cache=false<!-- 数据库批量查询最大数-->hibernate.jdbc.fetch_size=50<!-- 数据库批量更新、添加、删除操作最大数-->hibernate.jdbc.batch_size=50<!-- 是否自动提交事务-->hibernate.connection.autocommit=true<!-- 指定hibernate在何时释放JDBC连接-->hibernate.connection.release_mode=auto<!-- 创建session方式hibernate4.x 的方式-->hibernate.current_session_context_class=org.springframework.or m.hibernate4.SpringSessionContext<!-- javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包所以把它设置为none即可-->javax.persistence.validation.mode=none</value></property><!-- 自动扫描实体对象tdxy.bean的包结构中存放实体类--><property name="packagesToScan"value="tdxy.bean"/> </bean><!-- 定义事务管理--><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 定义Autowired 自动注入bean --><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotati onBeanPostProcessor"/><!-- 扫描有注解的文件base-package 包路径--><context:component-scan base-package="tdxy"/><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><!-- 事务执行方式REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。

Struct2、Hibernate3、Spring3框架搭建实战

Struct2、Hibernate3、Spring3框架搭建实战

Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。

整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。

⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。

第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。

建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。

struts2+spring3+hibernate整合教程

struts2+spring3+hibernate整合教程

Struts2+Spring3+hibernate3整合(2011年7月末,最新)上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。

想了想,我没老婆,难道没什么好写了!不难…献给我暗恋过的每一个女人!(嘿嘿…)如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!一,需要的框架包二,建立project,添加相应的.jar文件(重点)1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。

2,src中创建需要的类,这里以一个域模型为user的例子说明。

(现在建立这些类,可以方便我们在搭建时候随时测试!)User.javaIUserDao.javaUserDaoImpl.javaIUserService.javaUserServiceImpl.java3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。

4,拷贝spring运行中需要的其他jar文件,主要是mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。

ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar包)iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。

5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。

达梦Hibernate Spring集成开发示例

达梦Hibernate Spring集成开发示例

达梦Hibernate Spring集成开发示例DM是武汉华工达梦数据库有限公司推出的新一代高性能、高安全性的数据库产品。

它具有开放的、可扩展的体系结构,高性能事务处理能力,以及低廉的维护成本。

DM是完全自主开发的数据库软件,其安全级别达到了国内所有数据库产品中的最高级---B1级。

在这里我准备用时下比较流行的开发工具,Hibernate和Spring,达梦数据库。

以及MyEclipse来完成一个简单的应用。

数据库采用达梦5.01、用达梦创建一个test数据库,再创建一个user表,再创建两个字段username和password。

脚本如下create database test datafile 'test.dbf' size 100;set current database testcreate login test identified by test123 default database test;create user test related by test;grant resource to test at test;以上脚本为创建test数据库,并且创建一个登陆名为test 密码是test123drop table xt_user;create table xt_user(user_id varchar(30) not null,user_name varchar(20) not null,user_pwd varchar(30) not null,primary key(user_id));2、打开myeclipse的database explore透视图,右键单击左侧的空白区域,点击new 按钮单击“configure database driver”来配置数据库的驱动。

完成以后,做如下操作:然后测试数据库是否连接成功。

如果测试成功显示如下图:1.新建一个web项目testSpring 2.引入Spring包注意:这里为了省得以后再添加spring的相关包,所以一次性的选中了所有的包。

spring与hibernate集成的session问题

spring与hibernate集成的session问题

主要讨论Spring与Hibernate集成中的session问题1.通过getSession()方法获得session进行操作Java代码利用这种方式获得的session在方法执行结束之后不会自动关闭连接,也就是说我们必须通过session.close()或者releaseSession(session)来手动进行关闭,否则会造成内存泄露或者连接耗尽等问题。

手动关闭:Java代码如果对上述方法进行事务控制,那么spring框架会自动为我们关闭session,此种情况下再执行上述代码,会抛出如下异常:Java代码提示session已经关闭。

但是如果在代码中通过releaseSession(session)的方法来关闭session,则不会抛出异常。

releaseSession(session)方法的代码如下:Java代码也就是说它是通过SessionFactoryUtils的releaseSession方法来实现的:Java代码可见它内部会先进行判断。

查看getSession()方法的源码:Java代码getSession()方法内部通过它的一个重载方法getSession(boolean allowCreate )来实现,变量allowCreate是HibernateTemplate中的变量,默认值为true,也就是创建一个新的session。

如果我们调用getSession(false)来获得session,那么必须对其进行事务控制,原因是:(spring文档)Java代码也就是说,getSession()方法从当前事务或者一个新的事务中获得session,如果想从一个新的事务中获得session(也就意味着当其不存在事务控制),则必须使HibernateTemplate中的allowCreate变量的值为”true”,而现在设置allowCreate变量的值为”false”就意味着无法从新的事务中获得session,也就是只能从当前事务中获取,所以必须对当前方法进行事务控制,否则会抛出如下异常:Java代码同时,如果对getSession()所在的方法进行事务控制,那么类似如下的代码:只会打开一个session,因为事务控制必须确保是同一个连接,spring会确保在整个相关方法中只存在一个session。

整合struts1+spring+hibernate框架完成简单的登录

整合struts1+spring+hibernate框架完成简单的登录

*编写环境:*开发工具:Myeclipse6.01*SPRING :spring2.0*STRUTS :struts1.2*HIBERNATE:hibernate3.0*JDK: 1.6*TOMCAT: 6.0*WINDOW641.新建web项目。

2.选中新建项目,右键--》选择“myeclipse”--》添加Struts支持。

3.在弹出的信息框,有必要修改一下图中的地方。

4.上面的操作完成之后,打开我们的项目我们可以看到我们的项目结构发生了变化,引入了一些struts标签和生成了struts-config.xml配置文件。

5.开始添加spring支持,同样选中新建项目,右键--》选择“myeclipse”--》“添加spring 支持”,在弹出的信息框,做如下内容修改:6.点击“next”,直接选择默认,当然也可根据自己的规则做修改。

7.在添加“Hibernate”支持的时候,首先做的工作是创建一个数据源。

这个创建方法有很多中(找百度可得)这里只介绍一种:打开你的myeclipse的右上角的小三角,选择“myeclipsedatabase explorer”在弹出的界面中,在如图位置右键“new”在弹出的界面中做如下修改:修改完成后点击“test driver”成功则继续。

8.暂时回到myeclipse开发界面。

正式开始添加“Hibernate”支持。

在弹出的界面中做如图修改:点击“next”这里如图,选择spring的配置文件。

下一步操作后,做如下图修改操作:下一步之后,界面修改操作,如下图:去掉复选框中的选项,然后点击“finish”完成整个操作。

之后将会直接打开spring的配置文件,然后你核对一下您的数据库连接是否正确。

至此三大支持操作完成,启动没有问题说明框架雏形已经完成。

9.在项目中的WEB-INF下找到web.xml,做如下修改:格式头部分省略,下面是需要新增的代码<!--初始化spring配置参数 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 配置监听 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</list ener-class></listener><!-- 配置spring过滤器解决中文乱码问题 --><filter>Ps :这个时候我们再次启动服务的时候,发现可能会报错:因为我们在刚才已经把spring 的配置文件做了初始化,而在spring 的配置文件中有数据源的连接,而我们的项目中可能还缺少一个包:commons-pool-1.4.jar(/detail/u013806366/7897665 )当我们把这个包放在lib 下,我们再次启动项目的时候,错误信息应该会消失。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当hibernate遇上了Spring1.引入Spring的jar包2.引入applicationContext.xml文件3.在applicationContext.xml中引入dataSource引入sessionFactory定义hibernate DAO实现类类里面的注入sessionFactoryHibernateTemplate模板类a.使用的是Template method设计模式b.在spring中初始化HibernateTemplate,注入sessionFactoryDao中注入HibernateTemplateSave方法中写 this. HibernateTemplate.save(Entity)org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is ng.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPoolatorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.inst antiateBean(AbstractAutowireCapableBeanFactory.java:883)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.cre ateBeanInstance(AbstractAutowireCapableBeanFactory.java:839)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.do CreateBean(AbstractAutowireCapableBeanFactory.java:440)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.r un(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.cre ateBean(AbstractAutowireCapableBeanFactory.java:380)atorg.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(Abstra ctBeanFactory.java:264)atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleto n(DefaultSingletonBeanRegistry.java:222)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abstract BeanFactory.java:261)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe anFactory.java:185)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe anFactory.java:164)atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiat eSingletons(DefaultListableBeanFactory.java:429)atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryIni tialization(AbstractApplicationContext.java:728)atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApp licationContext.java:380)atorg.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPa thXmlApplicationContext.java:139)atorg.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPa thXmlApplicationContext.java:93)at com.zte.njut.demo.test.TestTeamDao.testSave(TestTeamDao.java:34)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:25)at ng.reflect.Method.invoke(Method.java:597)at junit.framework.TestCase.runTest(TestCase.java:164)at junit.framework.TestCase.runBare(TestCase.java:130)at junit.framework.TestResult$1.protect(TestResult.java:106)at junit.framework.TestResult.runProtected(TestResult.java:124)at junit.framework.TestResult.run(TestResult.java:109)at junit.framework.TestCase.run(TestCase.java:120)org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReferen ce.java:130)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:467)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:3 90)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java :197)Caused by: ng.NoClassDefFoundError:org/apache/commons/pool/impl/GenericObjectPoolat ng.Class.getDeclaredConstructors0(Native Method)at ng.Class.privateGetDeclaredConstructors(Class.java:2389)at ng.Class.getConstructor0(Class.java:2699)at ng.Class.getDeclaredConstructor(Class.java:1985)atorg.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(Si mpleInstantiationStrategy.java:54)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.inst antiateBean(AbstractAutowireCapableBeanFactory.java:877)... 32 moreCaused by: ng.ClassNotFoundException:mons.pool.impl.GenericObjectPoolat .URLClassLoader$1.run(URLClassLoader.java:200)at java.security.AccessController.doPrivileged(Native Method)at .URLClassLoader.findClass(URLClassLoader.java:188)at ng.ClassLoader.loadClass(ClassLoader.java:307)at uncher$AppClassLoader.loadClass(Launcher.java:301)at ng.ClassLoader.loadClass(ClassLoader.java:252)at ng.ClassLoader.loadClassInternal(ClassLoader.java:320)... 38 moreorg.hibernate.HibernateException: save is not valid without active transaction atorg.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.inv oke(ThreadLocalSessionContext.java:338)at $Proxy0.save(Unknown Source)at com.zte.njut.demo.dao.impl.TeamDaoImpl.save(TeamDaoImpl.java:38)at com.zte.njut.demo.test.TestTeamDao.testSave(TestTeamDao.java:40)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:25)at ng.reflect.Method.invoke(Method.java:597)at junit.framework.TestCase.runTest(TestCase.java:164)at junit.framework.TestCase.runBare(TestCase.java:130)at junit.framework.TestResult$1.protect(TestResult.java:106)at junit.framework.TestResult.runProtected(TestResult.java:124)at junit.framework.TestResult.run(TestResult.java:109)at junit.framework.TestCase.run(TestCase.java:120)atorg.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReferen ce.java:130)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:467)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:3 90)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java :197)org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teamDao' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception isorg.springframework.beans.NotWritablePropertyException: Invalid property'sessionFactory' of bean class [com.zte.njut.demo.dao.impl.TeamDaoImpl]: Bean property 'sessionFactory' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.ap plyPropertyValues(AbstractAutowireCapableBeanFactory.java:1279)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.po pulateBean(AbstractAutowireCapableBeanFactory.java:1010)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.do CreateBean(AbstractAutowireCapableBeanFactory.java:472)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.r un(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.cre ateBean(AbstractAutowireCapableBeanFactory.java:380)atorg.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(Abstra ctBeanFactory.java:264)atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleto n(DefaultSingletonBeanRegistry.java:222)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abstract BeanFactory.java:261)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe anFactory.java:185)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe anFactory.java:164)atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiat eSingletons(DefaultListableBeanFactory.java:429)atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryIni tialization(AbstractApplicationContext.java:728)atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApp licationContext.java:380)atorg.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPa thXmlApplicationContext.java:139)atorg.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPa thXmlApplicationContext.java:93)at com.zte.njut.demo.test.TestTeamDao.testSave(TestTeamDao.java:34)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:25)at ng.reflect.Method.invoke(Method.java:597)at junit.framework.TestCase.runTest(TestCase.java:164)at junit.framework.TestCase.runBare(TestCase.java:130)at junit.framework.TestResult$1.protect(TestResult.java:106)at junit.framework.TestResult.runProtected(TestResult.java:124)at junit.framework.TestResult.run(TestResult.java:109)at junit.framework.TestCase.run(TestCase.java:120)org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReferen ce.java:130)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:467)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:3 90)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java :197)Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'sessionFactory' of bean class [com.zte.njut.demo.dao.impl.TeamDaoImpl]: Bean property 'sessionFactory' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.ja va:801)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.ja va:651)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPro pertyAccessor.java:78)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPro pertyAccessor.java:59)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.ap plyPropertyValues(AbstractAutowireCapableBeanFactory.java:1276)... 32 more。

相关文档
最新文档