spring3.2+hibernate4.1+struts2.3集成 事务提交不了
spring中的配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> <!--********************************************* 工具类配置 *********************************************--> <!-- 1、获取登录前请求的url地址 --> <bean id="prePageInterceptor" class="com.insigma.books.util.GetPreUrlInterceptor" scope="prototype"></bean> <!-- 2、Hibernate操作数据库工具类 --> <bean id="hibernateTool" class="com.insigma.books.util.HibernateTool2" scope="prototype"> <constructor-arg name="sessionFactory" ref="sessionFactory"></constructor-arg> </bean> <!-- 3、页面信息 --> <bean id="pagetor" class="com.insigma.books.util.Pagetor" scope="prototype"></bean> <!-- 4、非法用户过滤 --> <bean id="userFilter" class="com.insigma.books.util.UserFilter" scope="prototype"></bean> <!-- 5、评论非法拦截 --> <bean id="authority" class="com.insigma.books.util.UserInteceptor" scope="prototype"></bean> <!--****************************************** 配置SessionFactory ****************************************--> <!-- 配置databaseSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" scope="singleton"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/taobaoke?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="lyl123"/> <!-- 连接池的最大值 --> <property name="maxActive" value="500"/> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2"/> <!-- 提交方式 --> <property name="defaultAutoCommit" value="false"></property> </bean> <!-- 配置sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" scope="singleton"> <property name="dataSource" ref="dataSource"/> <property name="mappingResources"> <list> <value>com/insigma/books/vo/Tcard.hbm.xml</value> <value>com/insigma/books/vo/Tuserinfo.hbm.xml</value> <value>com/insigma/books/vo/Tsysuser.hbm.xml</value> <value>com/insigma/books/vo/Tbooks.hbm.xml</value> <value>com/insigma/books/vo/Tcomment.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext hibernate.show_sql=true hibernate.format_sql=true javax.persistence.validation.mode=none </value> </property> </bean> <!-- 定义事务管理器(声明式的事务) --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" > <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add" propagation="REQUIRED" rollback-for="Exception"/> <tx:method name="edit" propagation="REQUIRED" rollback-for="Exception"/> <tx:method name="delete" propagation="REQUIRED" rollback-for="Exception"/> <tx:method name="executeHQL" propagation="REQUIRED" rollback-for="Exception"/> <tx:method name="executeSQL" propagation="REQUIRED" rollback-for="Exception"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="interceptorPointCuts" expression="execution(* com.books.util.HibernateTool2.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" /> </aop:config> <!--****************************************** dao实现类配置 *********************************************--> <!-- 1、首页 --> <bean id="indexDAOImpl" class="com.insigma.books.dao.impl.IndexDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!-- 2、登录 --> <bean id="loginDAOImpl" class="com.insigma.books.dao.impl.LoginDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!-- 3、评价管理 --> <bean id="pjglDAOImpl" class="com.insigma.books.dao.impl.PjglDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!-- 4、注册 --> <bean id="registerDAOImpl" class="com.insigma.books.dao.impl.RegisterDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!--5、书籍管理 --> <bean id="sjglDAOImpl" class="com.insigma.books.dao.impl.SjglDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!-- 6、用户管理 --> <bean id="yhglDAOImpl" class="com.insigma.books.dao.impl.YhglDAOImpl" scope="prototype"> <constructor-arg name="hibernateTool" ref="hibernateTool"></constructor-arg> </bean> <!--**************************************** service实现类配置 *******************************************--> <!-- 1、首页服务类 --> <bean id="indexServiceImpl" class="com.insigma.books.service.impl.IndexServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="indexDAOImpl"></constructor-arg> </bean> <!-- 2、登录服务类 --> <bean id="loginServiceImpl" class="com.insigma.books.service.impl.LoginServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="loginDAOImpl"></constructor-arg> </bean> <!-- 3、评价服务类 --> <bean id="pjglServiceImpl" class="com.insigma.books.service.impl.PjglServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="pjglDAOImpl"></constructor-arg> </bean> <!-- 4、注册服务类 --> <bean id="registerServiceImpl" class="com.insigma.books.service.impl.RegisterServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="registerDAOImpl"></constructor-arg> </bean> <!-- 5、书籍管理服务类 --> <bean id="sjglServiceImpl" class="com.insigma.books.service.impl.SjglServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="sjglDAOImpl"></constructor-arg> </bean> <!-- 6、用户管理服务类 --> <bean id="yhglServiceImpl" class="com.insigma.books.service.impl.YhglServiceImpl" scope="prototype"> <constructor-arg name="dao" ref="yhglDAOImpl"></constructor-arg> </bean> <!--********************************************* Action配置 *********************************************--> <!-- 1、图片验证码 --> <bean id="imageAction" class="com.insigma.books.action.SecurityCodeImageAction" scope="prototype"></bean> <!-- 2、首页 --> <bean id="indexAction" class="com.insigma.books.action.IndexAction" scope="prototype"> <constructor-arg name="service" ref="indexServiceImpl"></constructor-arg> <constructor-arg name="pagetor" ref="pagetor"></constructor-arg> </bean> <!-- 3、登录 --> <bean id="loginAction" class="com.insigma.books.action.LoginAction" scope="prototype"> <constructor-arg name="service" ref="loginServiceImpl"></constructor-arg> </bean> <!-- 4、注册 --> <bean id="registerAction" class="com.insigma.books.action.RegisterAction" scope="prototype"> <constructor-arg name="service" ref="registerServiceImpl"></constructor-arg> </bean> <!-- 5、用户管理 --> <bean id="yhglAction" class="com.insigma.books.action.YhglAction" scope="prototype"> <constructor-arg name="service" ref="yhglServiceImpl"></constructor-arg> <constructor-arg name="pagetor" ref="pagetor"></constructor-arg> </bean> <!-- 6、书籍管理 --> <bean id="sjglAction" class="com.insigma.books.action.SjglAction" scope="prototype"> <constructor-arg name="service" ref="sjglServiceImpl"></constructor-arg> <constructor-arg name="pagetor" ref="pagetor"></constructor-arg> </bean> <!-- 7、评价管理 --> <bean id="pjglAction" class="com.insigma.books.action.PjglAction" scope="prototype"> <constructor-arg name="service" ref="pjglServiceImpl"></constructor-arg> <constructor-arg name="pagetor" ref="pagetor"></constructor-arg> </bean> </beans>
hibernate代码:
package com.insigma.books.util; import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; /** * Hibernate操作数据库工具类(防sql注入) * * @author liyulin * * @version 2.2 2013-08-11 * */ public final class HibernateTool2 { private SessionFactory sessionFactory; public HibernateTool2(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /*********************************************** HQL操作数据库 ***********************************************/ /** * 增加一条记录 * * @param obj * * @return -1 增加失败;1 增加成功 * */ public int add(Object obj) { Session session = sessionFactory.openSession(); try { session.save(obj); return 1; } catch (Exception e) { e.printStackTrace(); return -1; } } /** * 修改一条记录 * * @param obj * * @return -1 修改失败;1 修改成功 * */ public int edit(Object obj) { Session session = sessionFactory.openSession(); try { session.update(obj); return 1; } catch (Exception e) { e.printStackTrace(); return -1; } } /** * 删除一条记录 * * @param obj * * @return -1 删除失败;1 删除成功 * */ public int delete(Object obj) { Session session = sessionFactory.openSession(); try { session.delete(obj); return 1; } catch (Exception e) { e.printStackTrace(); return -1; } } /** * 查询一条记录(HQL:使用positional parameter的方式进行参数绑定) * * @param hql * hql语句(参数用"?"表示) * * @param params * hql参数数组 * * @return Object * */ public Object findForObjectByHql(String hql, Object[] params) { Session session = sessionFactory.openSession(); Object object = null; try { // 参数绑定 Query query = session.createQuery(hql); if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = query.setParameter(i, params[i]); } } object = query.uniqueResult(); } catch (Exception e) { e.printStackTrace(); } return object; } /** * 分页查询(HQL:使用positional parameter的方式进行参数绑定) * * @param hql * hql语句(参数用"?"表示) * * @param params * hql参数数组 * * @param page * 开始页 * * @param rows * 每页的记录条数 * * @return List 返回结果 * */ @SuppressWarnings("rawtypes") public List findForListByHql(String hql, Object[] params, int page, int rows) { List list = null; Session session = null; try { session = sessionFactory.openSession(); // 参数绑定 Query query = session.createQuery(hql); if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = query.setParameter(i, params[i]); } } query.setFirstResult((page - 1) * rows);// 设置第几页 query.setMaxResults(rows); // 设置每页多少条记录 list = query.list(); } catch (Exception e) { e.printStackTrace(); } return list; } /** * 删除、更改(HQL:使用positional parameter的方式进行参数绑定) * * @param hql * hql语句(参数用"?"表示) * * @param params * hql参数数组 * * @return 0:失败;非0:成功 * */ public int executeHQL(String hql, Object[] params) { Session session = sessionFactory.openSession(); int success = 0;// 是否操作成功 try { // 参数绑定 Query query = session.createQuery(hql); if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = query.setParameter(i, params[i]); } } success = query.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return success; } /*********************************************** 标准SQL操作数据库 ***********************************************/ /** * 查询一条记录(标准SQL操作数据库:使用positional parameter的方式进行参数绑定) * * @param sql * sql语句(参数用"?"表示) * * @param params * sql参数数组 * * @return Object * */ @SuppressWarnings("rawtypes") public Object findForObjectBySql(String sql, Object[] params, Class obj) { Session session = sessionFactory.openSession(); Object object = null; try { SQLQuery query = session.createSQLQuery(sql); // 参数赋值 if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = (SQLQuery) query.setParameter(i, params[i]); } } object = query.addEntity(obj).uniqueResult(); } catch (Exception e) { e.printStackTrace(); } return object; } /** * 分页查询(标准SQL操作数据库:使用positional parameter的方式进行参数绑定) * * @param sql * sql语句(参数用"?"表示) * * @param params * sql参数数组 * * @param page * 开始页 * * @param rows * 每页的记录条数 * * @param obj * 欲查询的对象的class * * @return List 返回结果 * */ @SuppressWarnings("rawtypes") public List findForListBySql(String sql, Object[] params, int page, int rows, Class obj) { Session session = sessionFactory.openSession(); List list = null; try { SQLQuery query = session.createSQLQuery(sql); // 参数赋值 if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = (SQLQuery) query.setParameter(i, params[i]); } } list = query.addEntity(obj).setFirstResult((page - 1) * rows) .setMaxResults(rows).list(); } catch (Exception e) { e.printStackTrace(); } return list; } /** * 增加、删除、更改(标准SQL操作数据库:使用positional parameter的方式进行参数绑定) * * @param sql * sql语句(参数用"?"表示) * * @param params * sql参数数组 * * @return 0:失败;非0:成功 * */ public int executeSQL(String sql, Object[] params) { Session session = sessionFactory.openSession(); int success = 0;// 是否操作成功 try { SQLQuery query = session.createSQLQuery(sql); // 参数赋值 if (params != null) { for (int i = 0, size = params.length; i < size; i++) { query = (SQLQuery) query.setParameter(i, params[i]); } } success = query.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return success; } }
进行增、删、改时,事务不起作用。请问哪里错了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你看下把,spring el表达式 好像有问题的