如何整合spring和hibernate??? 如何整合spring和hibernate,整合之后,spring主要负责管理hiberante的那些事务呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【xwnxwn】截止到2008-07-19 11:17:05的历史汇总数据(不包括此帖):发帖的总数量:25 发帖的总分数:290 每贴平均分数:11 回帖的总数量:29 得分贴总数量:4 回帖的得分率:13% 结贴的总数量:25 结贴的总分数:290 无满意结贴数:14 无满意结贴分:290 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:56.00 % 无满意结分率:100.00% 敬礼! 不知道从那里说起,呵呵,给lz找了一篇文章,希望有时间的话就看看,讲述hibernate和spring整合方面关于事务和aop的。应该对你会有帮助http://www.ibm.com/developerworks/cn/java/wa-spring2/ 你可以试用myeclipse添加spring,hibernate功能,然后把hibernate的配置文件放到spring里面去就OK了自己仔细看一下里面的代码就OK了,管理hibernate的对数据库连接的配置等 使用平台:Eclipse3.2、MyEclipse5.01GAStruts、Spring、Hibernate三个框架在MyEclipse下添加顺序为:首先新建一个Web Project,添加Add Struts Capabilities…,设置好包路径后继续;选择MyEclipse菜单下的Add Spring Capabilities…选择所有的标签库,JAR Library Installation位置选择“Copy”项,下一步,设置Spring Bean配置文件位置,一般就默认在SRC目录,点击完成,就添加了Spring,继续;切换到MyEclipse Database Explorer(数据库浏览器视图),添加一个数据连接,测试连接成功后继续,这一步是为了给下面添加Hibernate框架准备的,因为它在建立过程中需要指定一个有效连接数据库的连接;选择MyEclipse菜单下的Add Hibernate Capabilities…选择反有的标签库,包括Spring的,JAR Library Installation位置还是选择“Copy”项,下一步;因为之前添加了Spring框架,所以这里就会自动识别到,并询问你使用Hibernate的配置文件“hibernate.cfg.xml”还是使用Spring的配置文件“applicationContext.xml”,这里选择Spring来统一配置,下一步;此处是定义Spring配置文件是需要新建还是使用已存在的Spring配置文件,这里选择Existing Spring configuration file,即使用已存在的Spring配置文件“src/applicationContext.xml”,下方需要指定Hibernate的SessionFactory在Spring配置文件中的Bean ID,使用“sessionFactory”即可,下一步;在DB Profile的下拉列表中选择刚刚建立的连接,并在Bean ID处设置这个DataSource在Spring配置文件中的Bean ID名,这里使用“DataSource”,下一步;接下来的Define SessionFactory properties界面是配置Hibernate的SessionFactory工具类存放位置,设置好包路径后,下一步;点击Finish,就完成了对Struts、Spring、Hibernate三个框架的设置。这里还需要配置Log4J(日志工具),只需将以下两个文件复制到SRC目录下即可commons-loggingproperties.propertieslog4j.properties至于这两文件里的具体配置就不再多说。接下来,先完成JSP页面、ActionForm、及Action的添加,添加过程就不再多说。再就是为数据表添加持久化类,过程是在MyEclipse DataBase Explorer中打开连接,找到所需的表后,鼠标右键点击表名,选择“Hibernate Reverse Engineering…”,设置了包路径后,依次钩选“Hibernate Mapping File”、“Java Data Object”(取消钩选“Create abstract class”)以及“Java Data Access Object(DAO)”,在“Java Data Access Object(DAO)”下会自动钩选“Generate precise findby methods”,以及选择“Spring DAO”选项,使用“Spring DAO”后,在DAO类里转而使用了HibernateTemplate对象来操作数据库,据说可以免去事务管理,具体情况,明天再继续研究。生成完持久化类后,需要在Struts-config.xml文件里添加以下字段:<plug-in className= "org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property= "contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/></plug-in>Value值就指定了Spring配置文件applicationContext.xml文件具体包位置。接着在Action中需要做以下操作:导入import org.springframework.web.struts.ActionSupport;包原先Action是继承Action类的,例:public class EmployeeListAction extends Action这里将它改为继承ActionSupport类,例:public class EmployeeListAction extends ActionSupport生成一个数据表的DAO对象,格式如下:EmployeeinfoDAO empDao=EmployeeinfoDAO.getFromApplicationContext(this.getWebApplicationContext()); List empList=empDao.getHibernateTemplate().loadAll(Employeeinfo.class); 如此就完成了读取一个数据表里所有字段的操作,是不是很简单呢? 如果要整合ssh,一般来说,是不是先添加struts 然后spring 最后是hibernate呢? 看看Spring的相关书籍,像李刚的轻量级Struts+hibernate+spring整合开发,这本书介绍的还不错的 先添加hibernate后添加spring最后添加struts框架其实我也刚学习呢以后互相学习吧 对数据的操作纳入管理。<!-- Hibernate Transaction Manager Definition --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributeSource"> <ref bean="namingTransactionAttribute" /> </property> </bean> <bean id="namingTransactionAttribute" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"> <property name="properties"> <props> <prop key="te*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="upload*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="create*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception</prop> <prop key="insert*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception</prop> <prop key="delete*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="send*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="submit*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="presubmit*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="init*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="on*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="extract*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="gene*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="update*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> <prop key="add*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop> </props> </property> </bean> 在添加hibernate框架的时候,是把hibernate.cfg.xml中内容防入spring的applicationcontext.xml中还是单独创建一个hibernate.cfg.xml好呢?请大家指教!! 谢谢了! 支持楼主单独创建一个hibernate.cfg.xml如果要用spring来管理事务,那么就要在applicationcontext.xml里配置数据源,<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="shop" /> </bean>上面我用的是JPA,楼主换成hibernate就行. 单独创建一个hibernate.cfg.xml 好处是什么? 求高手指点一下继承与多态有什么区别 在线等,关于switch case语句的问题,执行后结果不对,谁来帮下哈 一个关于Process的waitFor的问题请教各位高手,如果问题解决,立刻就结贴!!!!! 问一个有关Vector的问题 socket连接超时的问题,急 如何在linux下对右键进行编程 寻找java高手,我的问题希望能在QQ上慢慢解决。500分!两个星期。 大哥大姐,小弟想知道那里有支持JAVA的免费服务器啊?? 初学的第一个程序 小小问题,关于Thinking In Java 中一句话的含义 什么是面向接口编程?? 自做Java外理图片工具
楼主【xwnxwn】截止到2008-07-19 11:17:05的历史汇总数据(不包括此帖):
发帖的总数量:25 发帖的总分数:290 每贴平均分数:11
回帖的总数量:29 得分贴总数量:4 回帖的得分率:13%
结贴的总数量:25 结贴的总分数:290
无满意结贴数:14 无满意结贴分:290
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:56.00 % 无满意结分率:100.00%
敬礼!
自己仔细看一下里面的代码就OK了,管理hibernate的对数据库连接的配置等
Struts、Spring、Hibernate三个框架在MyEclipse下添加顺序为:
首先新建一个Web Project,添加Add Struts Capabilities…,设置好包路径后继续;选择MyEclipse菜单下的Add Spring Capabilities…选择所有的标签库,JAR Library Installation位置选择“Copy”项,下一步,设置Spring Bean配置文件位置,一般就默认在SRC目录,点击完成,就添加了Spring,继续;切换到MyEclipse Database Explorer(数据库浏览器视图),添加一个数据连接,测试连接成功后继续,这一步是为了给下面添加Hibernate框架准备的,因为它在建立过程中需要指定一个有效连接数据库的连接;选择MyEclipse菜单下的Add Hibernate Capabilities…选择反有的标签库,包括Spring的,JAR Library Installation位置还是选择“Copy”项,下一步;因为之前添加了Spring框架,所以这里就会自动识别到,并询问你使用Hibernate的配置文件“hibernate.cfg.xml”还是使用Spring的配置文件“applicationContext.xml”,这里选择Spring来统一配置,下一步;此处是定义Spring配置文件是需要新建还是使用已存在的Spring配置文件,这里选择Existing Spring configuration file,即使用已存在的Spring配置文件“src/applicationContext.xml”,下方需要指定Hibernate的SessionFactory在Spring配置文件中的Bean ID,使用“sessionFactory”即可,下一步;在DB Profile的下拉列表中选择刚刚建立的连接,并在Bean ID处设置这个DataSource在Spring配置文件中的Bean ID名,这里使用“DataSource”,下一步;接下来的Define SessionFactory properties界面是配置Hibernate的SessionFactory工具类存放位置,设置好包路径后,下一步;点击Finish,就完成了对Struts、Spring、Hibernate三个框架的设置。这里还需要配置Log4J(日志工具),只需将以下两个文件复制到SRC目录下即可
commons-loggingproperties.properties
log4j.properties
至于这两文件里的具体配置就不再多说。接下来,先完成JSP页面、ActionForm、及Action的添加,添加过程就不再多说。再就是为数据表添加持久化类,过程是在MyEclipse DataBase Explorer中打开连接,找到所需的表后,鼠标右键点击表名,选择“Hibernate Reverse Engineering…”,设置了包路径后,依次钩选“Hibernate Mapping File”、“Java Data Object”(取消钩选“Create abstract class”)以及“Java Data Access Object(DAO)”,在“Java Data Access Object(DAO)”下会自动钩选“Generate precise findby methods”,以及选择“Spring DAO”选项,使用“Spring DAO”后,在DAO类里转而使用了HibernateTemplate对象来操作数据库,据说可以免去事务管理,具体情况,明天再继续研究。生成完持久化类后,需要在Struts-config.xml文件里添加以下字段:
<plug-in className=
"org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property=
"contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
</plug-in>
Value值就指定了Spring配置文件applicationContext.xml文件具体包位置。接着在Action中需要做以下操作:
导入import org.springframework.web.struts.ActionSupport;包
原先Action是继承Action类的,例:
public class EmployeeListAction extends Action
这里将它改为继承ActionSupport类,例:
public class EmployeeListAction extends ActionSupport生成一个数据表的DAO对象,格式如下:
EmployeeinfoDAO empDao=EmployeeinfoDAO.getFromApplicationContext(this.getWebApplicationContext());
List empList=empDao.getHibernateTemplate().loadAll(Employeeinfo.class); 如此就完成了读取一个数据表里所有字段的操作,是不是很简单呢?
这本书介绍的还不错的
其实我也刚学习呢
以后互相学习吧
<!-- Hibernate Transaction Manager Definition -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributeSource">
<ref bean="namingTransactionAttribute" />
</property>
</bean>
<bean id="namingTransactionAttribute" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="properties">
<props>
<prop key="te*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="upload*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="create*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception</prop>
<prop key="insert*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception</prop>
<prop key="delete*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="send*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="submit*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="presubmit*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="init*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="on*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="extract*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="gene*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="update*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
<prop key="add*">PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,-Exception</prop>
</props>
</property>
</bean>
如果要用spring来管理事务,那么就要在applicationcontext.xml里配置数据源,<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="shop" />
</bean>上面我用的是JPA,楼主换成hibernate就行.