实现多个操作共用一个事务的实现没加spring框架的时候如下做法:
Session session = HibrenateSessionFactory.getSession();(创建一个Session)
Transaction t = session.beginTransaction();(创建一个事物)
session.save(bean);(保存)
session.update(bean);(更新)
t.commit();(事物提交)
session.close();(session关闭)
这是我在网上搜索到的,如果hibernate和spring集成要达到这样的效果可以怎么做谢谢。
Session session = HibrenateSessionFactory.getSession();(创建一个Session)
Transaction t = session.beginTransaction();(创建一个事物)
session.save(bean);(保存)
session.update(bean);(更新)
t.commit();(事物提交)
session.close();(session关闭)
这是我在网上搜索到的,如果hibernate和spring集成要达到这样的效果可以怎么做谢谢。
解决方案 »
- 如何通过后台数据显示前台页面(单选,多选,下拉列表)让他们的值被选中
- 出现一个奇怪的问题,希望哪位高手帮我解决一下!
- webservice wsimport后得到的结果为什么只有.class 没有.java
- 本人想学structs,可是不知怎么学比较好?哪位能指点一下?个个有分
- 不放心刚才提问的大姐,在这补充一下回帖
- jsp
- 急急急
- 请问高手一个汉字字符比较的问题!如能解决高分相赠!!!!在线等待中。。。。。。
- socket通信问题请教
- SQL怎么查找到的重复信息并删除
- 用最新的MyEclipse 6.6开发网站,构建ssh框架,导什么版本的Struts,Spring,Hibernater,要导什么包才不会出错????
- jsp:fallback
在事务类继承spring的hibernatesupport
就可以使用getHibernateTemplete 来得到Hibernatetemplete了,他就相当于session 不需要自己去创建和关闭,他的创建和关闭全由Spring的容器管理。你只需要再spring的配置文件中配置事务的属性和控制器。和datasouce,sessionfactory的注入配置。
想弄明白最好一找本SSH整合的书读读
将这个元注释添加到你想要被支持的方法前
@Transactional
public User login(String username, String password) {
Query query = entityManager
.createQuery(
"select u from User as u where u.username = :username and u.password = :password")
.setParameter("username", username).setParameter("password",
password);
return (User) (query.getResultList().isEmpty() ? null : query
.getSingleResult());
}
这样,该托管Bean上所有被标上的方法都将会得到Spring的事务支持。如果你让Bean的所有方法都得到事务支持,那么就在类前面添加即可import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;import xchatroom.entity.User;
import xchatroom.session.UserSession;@Transactional
@Repository
public class UserSessionImpl implements UserSession { @PersistenceContext(unitName = "xchatroomPU")
private EntityManager entityManager; public void register(User user) {
entityManager.persist(user);
} public User login(String username, String password) {
Query query = entityManager
.createQuery(
"select u from User as u where u.username = :username and u.password = :password")
.setParameter("username", username).setParameter("password",
password);
return (User) (query.getResultList().isEmpty() ? null : query
.getSingleResult());
} public User get(long id) {
return entityManager.find(User.class, id);
} public void modify(User user) {
entityManager.merge(user);
} public User get(String username) {
Query query = entityManager.createQuery(
"select u from User as u where u.username = :username")
.setParameter("username", username);
return (User) (query.getResultList().isEmpty() ? null : query
.getSingleResult());
}}