spring 3+hibernate 3 整合
spring 配置文件
- XML code
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /></bean><tx:annotation-driven transaction-manager="txManager" />
dao基类
- Java code
import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;@Repository@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public class BaseDao<T, PK extends Serializable> implements BaseDaoService<T, PK> { @Resource SessionFactory factory; /** *保存对象 */ @Override @Transactional(readOnly = false, propagation = Propagation.SUPPORTS) public void save(T entity) { factory.getCurrentSession().persist(entity);//persist方法不能插入数据 }}
service层
- Java code
@Service@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public class MyService { @Resource MyDAO myDAO;//继承自dao基类,此处是dao的接口 @Override @Transactional(readOnly = false, propagation = Propagation.SUPPORTS) public void save(User entity) { myDAO.save(entity); }}
dao层代码就不写了,只是继承了基类dao
控制层
- Java code
@Controller@RequestMapping(value = "/user")public class UserAction { @Resource UserService myService;//service接口 @RequestMapping(value = "/add") public String user_add(User user) { myService.save(user); return "list"; }}
页面提交后数据无法insert 进数据库,
- Java code
factory.getCurrentSession().persist(entity);// 把persit更改为factory.getCurrentSession().save(entity);
------解决方案--------------------------------------------------------
说的好啊
------解决方案--------------------------------------------------------
事务没有提交....你可以在hibernate.cfg.xml中添加一个节点:
<property name="connection.autocommit">true</property>
------解决方案--------------------------------------------------------
试一试去掉@Transactional(readOnly = false,里面的readOnly = false,
------解决方案--------------------------------------------------------
把你类上面的 事物定义去掉 只保留 方法上的 再试试