- 浏览: 502670 次
- 性别:
- 来自: 惠州
文章分类
- 全部博客 (255)
- ant (1)
- springMVC (2)
- ajax (4)
- oracle (12)
- SSH (13)
- struts1 (2)
- Hibernate (14)
- spring (5)
- jstl (1)
- 连接池 (1)
- acegi (4)
- java (17)
- jquery (11)
- div+css (4)
- drupal (1)
- php (8)
- freemaker调模板生成静态页面 (1)
- xml (1)
- json (2)
- javascript (9)
- 正则表达式 (4)
- Ext (8)
- jdbc (1)
- sql server (2)
- perl (5)
- db4o (1)
- webservice (4)
- flex (13)
- it资讯 (1)
- joomla (0)
- 设计模式 (1)
- struts2 (4)
- s2sh (8)
- linux (3)
- ejb (2)
- android旅途 (24)
- android (36)
- C/C++ (16)
- mysql (1)
最新评论
-
fengyuxing168:
IBelyService bs = IBelyService. ...
为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取 -
dengzhangtao:
"由于ActivityManagerService是 ...
binder理解 -
yzyspy:
ActivityManagerService:startHom ...
Android的Launcher成为系统中第一个启动的,也是唯一的 -
Matchstick:
使用SELECT DISTINCT alias FROM Po ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题 -
dlheart:
没看懂你什么意思啊,我遇到的问题是一对多,设了fetch = ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题
Struts Spring Hibernate 事务管理的例子。
关键词: Struts Spring Hibernate 事务管理
这两天比较清闲,试着配置了一下Struts Spring Hibernate 。由Spring来接管Struts的Action和Hibernate的事务管理。现做一下笔记。
1. Struts配置文件struts-config.xml
首先加上Spring的Context Loader插件
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/beans.xml" />
</plug-in>
其中beans.xml是Spring的配置文件。
添加一个Action
<action path="/sample"
type="org.springframework.web.struts.DelegatingActionProxy">
</action>
注意type变成了Spring的代理类,当然这儿可以加入一些Forward
2. Spring的配置文件 beans.xml
添加action的对应bean,由于struts已经把这个bean委托给spring来管了,所以当然应该在spring中配置对应的class
<bean name="/sample" class="com.windrift.action.SampleAction">
<property name="sampleManager" ref="sampleManager" />
</bean>
对 sampleManager的配置,实际上对应的是 com.windrift.manager.SampleManager,由于需要对这个 manager配置事务,所以给他指定了一个模板parent="baseService",注意这个parent并不是指继承关系,稍后我们会对这个模板指定事务的策略。
<bean id="sampleManager" parent="baseService">
<property name="target">
<bean class="com.windrift.manager.SampleManager" autowire="byName">
<property name="sampleDAO" ref="sampleDAO" />
</bean>
</property>
</bean>
配置sampleDAO,这里的模板baseDao我们不关心,这儿不详述。
<bean id="sampleDAO" parent="baseDao">
<property name="target">
<bean class="com.windrift.dao.imp.SampleDAOImp" autowire="byName"></bean>
</property>
</bean>
下面配置Hibernate的数据源,这儿用的是MySQL数据库,由于数据库的处理等已经交由Spring处理,因此不再需要Hibernate的配置文件。除了表和PO的映射文件外(如Sample.hbm.xml)
<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://localhost/shop</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
sessionFactory依据数据源创建Session链接
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>SystemInfo.hbm.xml</value>
<value>Ad.hbm.xml</value>
<value>Good.hbm.xml</value>
<value>Logo.hbm.xml</value>
<value>Member.hbm.xml</value>
<value>News.hbm.xml</value>
<value>NSort.hbm.xml</value>
<value>Pub.hbm.xml</value>
<value>Sort.hbm.xml</value>
<value>Sub.hbm.xml</value>
<value>Basket.hbm.xml</value>
<value>Sample.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">
UTF-8
</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">
false
</prop>
<prop key="hibernate.connection.pool.size">2</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="jdbc.fetch_size">50</prop>
<prop key="jdbc.batch_size">25</prop>
<prop key="jdbc.use_scrollable_resultset">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
事务管理类,通过SessionFactory来获取session
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
配置一个切入器,它依据配置的一些事务策略,会调用 transactionManager来进行事务管理。
这个例子中需要进行事务管理的类(所有parent是baseService的类)的所有以Get开头的方法会在一个只读事务环境中运行。其余方法需要进行事务传递,并且一旦这个方法抛出BaseException异常则回滚事务。(如果希望强制commit事务,则把BaseException前面的-改成+)
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">
PROPAGATION_REQUIRED,-BaseException
</prop>
</props>
</property>
</bean>
这个就是前面提到的模板,它说明所有应用此模板的类(parent=baseService的 类)都会被 置于transactionInterceptor中配置的事务环境中。
<bean id="baseService" abstract="true"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
3. SampleAction.java
只是简单的调用了一下manager的方法
package com.windrift.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.windrift.manager.SampleManager;
public class SampleAction extends Action{
private SampleManager sampleManager;
public ActionForward execute(ActionMapping aMapping, ActionForm aForm,
HttpServletRequest aRequest, HttpServletResponse aResponse)
throws Exception {
sampleManager.doSomething();
return null;
}
public void setSampleManager(SampleManager sampleManager) {
this.sampleManager = sampleManager;
}
}
4. SampleManager.java
方法doSomething中我们往数据库里加了两个记录Sample1和Sample2
但是在最后我们强制抛出了一个BaseException,根据前面设置的事务环境和策略,这两条插入的记录都会被回滚。
package com.windrift.manager;
import com.windrift.dao.SampleDAO;
import com.windrift.dao.persist.Sample;
import com.windrift.exception.BaseException;
public class SampleManager {
private SampleDAO sampleDAO;
public void setSampleDAO(SampleDAO sampleDAO) {
this.sampleDAO = sampleDAO;
}
public void doSomething() throws BaseException{
Sample sample1 = new Sample();
sample1.setSample("sample1");
sampleDAO.addSample(sample1);
Sample sample2 = new Sample();
sample2.setSample("sample2");
sampleDAO.addSample(sample2);
throw new BaseException();
}
}
5. SampleDAOImp.java
简单的调用了父类的方法。
package com.windrift.dao.imp;
import com.windrift.dao.SampleDAO;
import com.windrift.dao.persist.Sample;
public class SampleDAOImp extends BaseDAOImp implements SampleDAO {
public void addSample(Sample sample) {
this.save(sample);
}
}
补充一个需要使用回调函数的方法。由于我们的session的管理(包括事务)都交给spring来处理了。所以通常情况下我们是无法访问session的。但是有时候我们又需要使用session,这时候就需要使用回调函数,以取得session。
public List getAllSortASC() {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("from Sort order by sort_id asc");
List sorts = query.list();
return sorts;
}});}
public Sort getSortById(final int id) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("from Sort where sort_ID = ?");
query.setInteger(0, id);
return query.list();
}
});
if (list != null && list.isEmpty() == false) {
return (Sort) list.get(0);
} else {
return null;
}
}
6. DAO的基类
注意由于所有dao都需要继承自HibernateDaoSupport ,所以我们在基类中做这个动作。
package com.windrift.dao.imp;
import java.io.Serializable;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.windrift.dao.BaseDAO;
public class BaseDAOImp extends HibernateDaoSupport implements BaseDAO {
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#delete(java.lang.Object)
*/
public void delete(Object o) {
getHibernateTemplate().delete(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#flush()
*/
public void flush() {
getHibernateTemplate().flush();
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#get(java.lang.Class, java.io.Serializable)
*/
public Object get(Class clazz, Serializable id) {
return getHibernateTemplate().get(clazz, id);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#load(java.lang.Class, java.io.Serializable)
*/
public Object load(Class clazz, Serializable id) {
return getHibernateTemplate().load(clazz, id);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#refresh(java.lang.Object)
*/
public void refresh(Object o) {
getHibernateTemplate().refresh(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#remove(java.lang.Class, java.io.Serializable)
*/
public void remove(Class clazz, Serializable id) {
getHibernateTemplate().delete(get(clazz, id));
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#save(java.lang.Object)
*/
public void save(Object o) {
getHibernateTemplate().save(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#saveOrUpdate(java.lang.Object)
*/
public void saveOrUpdate(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#update(java.lang.Object)
*/
public void update(Object o) {
getHibernateTemplate().update(o);
}
}
自此圆满完成这个小例子。最后说一点,由于hibernate进行了一次版本更新,因此存在hibernate3和hibernate两个包(如:import org.springframework.orm.hibernate3.support.HibernateDaoSupport;)。大家一定都使用 hibernate3,不然出错比较难找。
关键词: Struts Spring Hibernate 事务管理
这两天比较清闲,试着配置了一下Struts Spring Hibernate 。由Spring来接管Struts的Action和Hibernate的事务管理。现做一下笔记。
1. Struts配置文件struts-config.xml
首先加上Spring的Context Loader插件
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/beans.xml" />
</plug-in>
其中beans.xml是Spring的配置文件。
添加一个Action
<action path="/sample"
type="org.springframework.web.struts.DelegatingActionProxy">
</action>
注意type变成了Spring的代理类,当然这儿可以加入一些Forward
2. Spring的配置文件 beans.xml
添加action的对应bean,由于struts已经把这个bean委托给spring来管了,所以当然应该在spring中配置对应的class
<bean name="/sample" class="com.windrift.action.SampleAction">
<property name="sampleManager" ref="sampleManager" />
</bean>
对 sampleManager的配置,实际上对应的是 com.windrift.manager.SampleManager,由于需要对这个 manager配置事务,所以给他指定了一个模板parent="baseService",注意这个parent并不是指继承关系,稍后我们会对这个模板指定事务的策略。
<bean id="sampleManager" parent="baseService">
<property name="target">
<bean class="com.windrift.manager.SampleManager" autowire="byName">
<property name="sampleDAO" ref="sampleDAO" />
</bean>
</property>
</bean>
配置sampleDAO,这里的模板baseDao我们不关心,这儿不详述。
<bean id="sampleDAO" parent="baseDao">
<property name="target">
<bean class="com.windrift.dao.imp.SampleDAOImp" autowire="byName"></bean>
</property>
</bean>
下面配置Hibernate的数据源,这儿用的是MySQL数据库,由于数据库的处理等已经交由Spring处理,因此不再需要Hibernate的配置文件。除了表和PO的映射文件外(如Sample.hbm.xml)
<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://localhost/shop</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
sessionFactory依据数据源创建Session链接
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>SystemInfo.hbm.xml</value>
<value>Ad.hbm.xml</value>
<value>Good.hbm.xml</value>
<value>Logo.hbm.xml</value>
<value>Member.hbm.xml</value>
<value>News.hbm.xml</value>
<value>NSort.hbm.xml</value>
<value>Pub.hbm.xml</value>
<value>Sort.hbm.xml</value>
<value>Sub.hbm.xml</value>
<value>Basket.hbm.xml</value>
<value>Sample.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">
UTF-8
</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">
false
</prop>
<prop key="hibernate.connection.pool.size">2</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="jdbc.fetch_size">50</prop>
<prop key="jdbc.batch_size">25</prop>
<prop key="jdbc.use_scrollable_resultset">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
事务管理类,通过SessionFactory来获取session
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
配置一个切入器,它依据配置的一些事务策略,会调用 transactionManager来进行事务管理。
这个例子中需要进行事务管理的类(所有parent是baseService的类)的所有以Get开头的方法会在一个只读事务环境中运行。其余方法需要进行事务传递,并且一旦这个方法抛出BaseException异常则回滚事务。(如果希望强制commit事务,则把BaseException前面的-改成+)
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">
PROPAGATION_REQUIRED,-BaseException
</prop>
</props>
</property>
</bean>
这个就是前面提到的模板,它说明所有应用此模板的类(parent=baseService的 类)都会被 置于transactionInterceptor中配置的事务环境中。
<bean id="baseService" abstract="true"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
3. SampleAction.java
只是简单的调用了一下manager的方法
package com.windrift.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.windrift.manager.SampleManager;
public class SampleAction extends Action{
private SampleManager sampleManager;
public ActionForward execute(ActionMapping aMapping, ActionForm aForm,
HttpServletRequest aRequest, HttpServletResponse aResponse)
throws Exception {
sampleManager.doSomething();
return null;
}
public void setSampleManager(SampleManager sampleManager) {
this.sampleManager = sampleManager;
}
}
4. SampleManager.java
方法doSomething中我们往数据库里加了两个记录Sample1和Sample2
但是在最后我们强制抛出了一个BaseException,根据前面设置的事务环境和策略,这两条插入的记录都会被回滚。
package com.windrift.manager;
import com.windrift.dao.SampleDAO;
import com.windrift.dao.persist.Sample;
import com.windrift.exception.BaseException;
public class SampleManager {
private SampleDAO sampleDAO;
public void setSampleDAO(SampleDAO sampleDAO) {
this.sampleDAO = sampleDAO;
}
public void doSomething() throws BaseException{
Sample sample1 = new Sample();
sample1.setSample("sample1");
sampleDAO.addSample(sample1);
Sample sample2 = new Sample();
sample2.setSample("sample2");
sampleDAO.addSample(sample2);
throw new BaseException();
}
}
5. SampleDAOImp.java
简单的调用了父类的方法。
package com.windrift.dao.imp;
import com.windrift.dao.SampleDAO;
import com.windrift.dao.persist.Sample;
public class SampleDAOImp extends BaseDAOImp implements SampleDAO {
public void addSample(Sample sample) {
this.save(sample);
}
}
补充一个需要使用回调函数的方法。由于我们的session的管理(包括事务)都交给spring来处理了。所以通常情况下我们是无法访问session的。但是有时候我们又需要使用session,这时候就需要使用回调函数,以取得session。
public List getAllSortASC() {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("from Sort order by sort_id asc");
List sorts = query.list();
return sorts;
}});}
public Sort getSortById(final int id) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("from Sort where sort_ID = ?");
query.setInteger(0, id);
return query.list();
}
});
if (list != null && list.isEmpty() == false) {
return (Sort) list.get(0);
} else {
return null;
}
}
6. DAO的基类
注意由于所有dao都需要继承自HibernateDaoSupport ,所以我们在基类中做这个动作。
package com.windrift.dao.imp;
import java.io.Serializable;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.windrift.dao.BaseDAO;
public class BaseDAOImp extends HibernateDaoSupport implements BaseDAO {
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#delete(java.lang.Object)
*/
public void delete(Object o) {
getHibernateTemplate().delete(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#flush()
*/
public void flush() {
getHibernateTemplate().flush();
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#get(java.lang.Class, java.io.Serializable)
*/
public Object get(Class clazz, Serializable id) {
return getHibernateTemplate().get(clazz, id);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#load(java.lang.Class, java.io.Serializable)
*/
public Object load(Class clazz, Serializable id) {
return getHibernateTemplate().load(clazz, id);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#refresh(java.lang.Object)
*/
public void refresh(Object o) {
getHibernateTemplate().refresh(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#remove(java.lang.Class, java.io.Serializable)
*/
public void remove(Class clazz, Serializable id) {
getHibernateTemplate().delete(get(clazz, id));
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#save(java.lang.Object)
*/
public void save(Object o) {
getHibernateTemplate().save(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#saveOrUpdate(java.lang.Object)
*/
public void saveOrUpdate(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
/* (non-Javadoc)
* @see com.windrift.dao.imp.BaseDAO#update(java.lang.Object)
*/
public void update(Object o) {
getHibernateTemplate().update(o);
}
}
自此圆满完成这个小例子。最后说一点,由于hibernate进行了一次版本更新,因此存在hibernate3和hibernate两个包(如:import org.springframework.orm.hibernate3.support.HibernateDaoSupport;)。大家一定都使用 hibernate3,不然出错比较难找。
发表评论
-
关于openSession()与getCurrentSession()
2010-05-13 14:25 2167关于openSession()与getCurrentSessi ... -
s2sh 配置文件说明 application.xml文件配置说明
2010-05-13 10:22 2315Hibernate配置项 Xml代码 ... -
二级缓存的配置 配置ehcache.xml文件
2010-05-13 10:12 1345原文出处:http://i.cn.yahoo.com/en.w ... -
配置一个数据源 spring
2010-03-26 09:01 944配置一个数据源 Spring在第三方依赖包中包含了两个 ... -
Spring的四种声明式事务的配置-Hibernate事务
2009-04-03 13:41 1926Spring的四种声明式事务的配置-Hibernate事务20 ... -
我的通用DAO理解,请大家指正
2008-11-20 12:28 4197首先声明我的资料大我来自javaeye,先谢谢各位. 但因本人 ... -
J2EE学习笔记——初试SSH之泛型通用DAO
2008-11-19 16:12 1652J2EE学习笔记——初试SSH之泛型通用DAO 在做项目的时候 ... -
一个acegi配置文件applicationContext-security-acegi.xm
2008-10-08 20:29 1704<?xml version="1.0" ... -
一个proxool连接池的applicationContext.xml配置文件
2008-10-08 20:23 1761applicationContext.xml <?xml ... -
一个web.xml配置文件
2008-10-08 20:20 2268web.xml <?xml version=" ... -
ssh 整合测试
2008-08-18 18:27 1784ssh 整合测试 关键字: ssh整合 搞了很久的ssh整合 ... -
我的智囊团构建全过程
2008-05-15 14:26 1662ssh综合实战 (Struts+sprin ...
相关推荐
为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: ...5.通过 spring aop(aspectJ) 声明事务 6.通过formular 映射参数表,指定两个死的变量
本文是开发基于spring的web应用的入门文章,前端采用Struts MVC框架,中间层采用spring,后台采用Hibernate。 本文包含以下内容: •配置Hibernate和事务 •装载Spring的applicationContext.xml文件 •...
前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...
StrutsHibernateBySQLImplTest.java :为单元测试类 自动生成表:具体数据库 sqlserver2000 ,oracle 服务层代码如下: public class HibernateServerImpl implements HibernateServerInterface { ...测试通过的例子:
spring+struts2+hibernate 整合 注解 留言板 事务
struts2+spring+hibernate分页,事务,自定义切面,事务的配置
本例写于2013年6月5日,全部采用最新的jar包,利用maven构建工具集成struts2 + spring3 + hibernate4 写成的web示例程序。该示例严格采用三层架构,提供事务处理机制。可直接基于该示例进行更深层业务的开发。
使用到了Hibernate中的: HQL查询 SQL查询 QBC查询 配置文件中配置SQL/HQL语句查询 使用到了Spring中的: Ioc实现动态代理 和 Aop实现自动事务处理!
spring2.0整合struts1.2和hibernate3开发小例子,并配有AOP事务管理,所需要的支持包还需要根据指导手册导入,供大家参考。
本资源是一个S2SH架构整合的一个完整例子,包含:struts2的完整配置及实例,使用c3p0连接池,Spring的事务管理、类路径扫描管理功能、注解功能。例子本人已测试通过,所有配置和代码都有完整的注释,适合初学者或者...
全书共分14章,内容涵盖了Spring的基础概念、核心容器、Spring AOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、Spring和Hibernate、Spring和Ant、Spring和Junit。本书适用于...
Struts+Spring+Hibernate实现上传下载 本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本: •Struts 1.2 •Spring 1.2.5 •Hibernate 3.0 本文...
5.1.8.1Spring的事务管理器 117 5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1.8.4以XML配置的 形式 119 拓展: 120 5.1.8.5以注解方式配置 125 拓展: 127 5.1.9使用CGLIB以XML...
简单例子 action里很多东西应该写到service层的 用spring管理hibernate事务 IDE: myclipse7.0 struts2.014+spring2.5+hibernate3.2+mysql 导入项目和数据库 部署一下就可以看到效果
简单例子 action里很多东西应该写到service层的 用spring管理hibernate事务 IDE: myclipse7.0 struts2.014+spring2.5+hibernate3.2+mysql 导入项目和数据库 部署一下就可以看到效果
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...
简单的ppt和例子。1、轻松实现软件各层之间的解耦:利用依赖注入技术,降低组件之间的耦合度。...6、 Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts2等,更便于应用的开发。
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...
全书共分14章,内容涵盖了Spring的基础概念、核心容器、Spring AOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、S pring和Hibernate、Spring和Ant、Spring和Junit。本书适用于初、中级软件开发人员...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...