ssh项目问题:更新数据写到了内存里但不能正确存入数据库 50
在内存中有更新过的数据,比如用户密码更改过后,用新密码才能登陆。但是数据不能正确写入数据库。比如,用户密码更改过后,数据库用户登录数据表打不开,而且重启之后更改过的数据消...
在内存中有更新过的数据,比如用户密码更改过后,用新密码才能登陆。
但是数据不能正确写入数据库。比如,用户密码更改过后,数据库用户登录数据表打不开,而且重启之后更改过的数据消失。即没有存入数据库中。
没有配置声明式事务,配置声明式事务之后就无法获得输入;
用了getHibernateTemplate()事务应该是自动提交的,我也手动进行了事务提交,但还还是不行。结果一样。是不是spring的配置文件写的不对?
代码:
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<!-- 用于配置详细的事务语义 -->
<tx:attributes>
<!-- 所有以'get'开头的方法是read-only的
<tx:method name="get*" propagation = "REQUIRED"/>
--><!-- 其他方法使用默认的事务设置 -->
<tx:method name="*" propagation = "REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 配置一个切入点 -->
<aop:pointcut id="Pointcut"
expression="bean(*passwordchanAction)"/>
<!-- 指定在leePointcut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="txAdvice"
pointcut-ref="Pointcut"/>
</aop:config> 展开
但是数据不能正确写入数据库。比如,用户密码更改过后,数据库用户登录数据表打不开,而且重启之后更改过的数据消失。即没有存入数据库中。
没有配置声明式事务,配置声明式事务之后就无法获得输入;
用了getHibernateTemplate()事务应该是自动提交的,我也手动进行了事务提交,但还还是不行。结果一样。是不是spring的配置文件写的不对?
代码:
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<!-- 用于配置详细的事务语义 -->
<tx:attributes>
<!-- 所有以'get'开头的方法是read-only的
<tx:method name="get*" propagation = "REQUIRED"/>
--><!-- 其他方法使用默认的事务设置 -->
<tx:method name="*" propagation = "REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 配置一个切入点 -->
<aop:pointcut id="Pointcut"
expression="bean(*passwordchanAction)"/>
<!-- 指定在leePointcut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="txAdvice"
pointcut-ref="Pointcut"/>
</aop:config> 展开
展开全部
您好,您的这个原因已经说的很明了了。您的数据库没反应,是因为,在此之间,中断过操作,然而,数据库自带一个回滚事务,没有成功,就还原成原来的那个样子,这也是数据库为了自己本身的安全和性能着想,所有没有存入数据库中。。
更多追问追答
追问
没看懂 怎么改?改哪里?
追答
改您applicationContext.xml中的事务。看您逻辑实现的那一块有没有被事务进行管理。。方便的话,能将您的事务处理那一块贴出来吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-09
展开全部
晕,你贴的spring配置不是声明式事物么????expression对吗????。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查一下,更新操作是否提交了事务!
也可贴出你代码,看一眼!
也可贴出你代码,看一眼!
更多追问追答
追问
没有配置声明式事务,配置声明式事务之后就无法获得输入;
用了getHibernateTemplate()事务应该是自动提交的,我也手动进行了事务提交,但还还是不行。结果一样。是不是spring的配置文件写的不对?
追答
你的数据库连接类,继承的是org.springframework.orm.hibernate3.support.HibernateDaoSupport吧?
示例:注入sessionfactory
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class MyHibernateDaoSupport extends HibernateDaoSupport {
@Resource(name="sessionFactory") //为父类HibernateDaoSupport注入sessionFactory的值
public void setSuperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
你的数据库操作类,只需继承MyHibernateDaoSupport即可。
如:
/**
* ……省略引用包
*/
public class BaseDao extends MyHibernateDaoSupport {
/**
* 保存实体 包括添加和修改
* @param t - 实体对象
*/
public void saveOrUpdate(T t) {
getHibernateTemplate().saveOrUpdate(t);
}
}
事务的贴不上,超长了,你再追问次!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询