hibernate交spring事务托管后插入数据无效,不发送sql语句,不报错,但能查询到数据。
如果手动执行sessionFactory.getCurrentSession().flush()可以立即写入到数据库。
不手动的话无法自动事务提交。
怀疑是spring事务管理没起作用。
(学生党刚学框架,不妥当的地方还请明示)
dao层代码:
public class UserDao implements IUserDao{
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public boolean addUser(User user) {
LogUtil.getLog().info("正在执行user插入操作~");
try {
sessionFactory.getCurrentSession().save(user);
} catch (Exception e) {
LogUtil.getLog().error(e);
return false;
}
return true;
}
controller层:
if(code.equals(checkCode)){
if(userDao.addUser(user)){
//将用户信息加进session中
return "redirect:/returnIndex";
}else{
model.addAttribute("message", "系统异常,注册失败!");
return "forward:/user/returnRegiste";
}
}else{
model.addAttribute("message", "验证码错误!");
return "forward:/user/returnRegiste";
}
xml配置:
<!-- c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="user"><value>root</value></property>
<property name="password"><value></value></property>
<property name="minPoolSize"><value>20</value></property>
<property name="maxPoolSize"><value>100</value></property>
<property name="initialPoolSize"><value>20</value></property>
<property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>
<property name="jdbcUrl"><value>jdbc:mysql://localhost:3306/db_shop?useUnicode=true&characterEncoding=UTF-8</value></property>
</bean>
杨魅力
相关分类