栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

关于方法上的Spring @Transactional注释的一些说明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于方法上的Spring @Transactional注释的一些说明

首先,您不应该使DAO方法具有事务性,而应使服务方法具有事务性。

其次,使用Transactional是让Spring为您启动和提交/回滚事务的一种方法。因此,您不应该自己启动和提交事务。

第三:仅当您使用知道如何将Hibernate会话与事务相关联的事务管理器(通常为a

HibernateTransactionManager
)时,此方法才有效。会话工厂也应该由Spring处理,并由Spring注入您的DAO中。DAO的代码应如下所示:

第四:您不应该打开一个新会话,而是要获得一个与Spring的当前事务相关联的当前会话。

public class PersonDAOImpl implements PersonDAO {    @Autowired    private SessionFactory sessionFactory;    public Integer addPerson(Person p) {        Session session = sessionFactory.getCurrentSession();        Integer personID = (Integer) session.save(p);        return personID;    }    public Person getById(int id) {        Session session = sessionFactory.getCurrentSession();        Person retrievedPerson = (Person) session.get(Person.class, id);        return retrievedPerson;    }    @SuppressWarnings("unchecked")    public List<Person> getPersonsList() {        Session session = sessionFactory.getCurrentSession();        Criteria criteria = session.createCriteria(Person.class);        return criteria.list();    }    public void delete(int id) {        Session session = sessionFactory.getCurrentSession();        Person personToDelete = getById(id);        session.delete(personToDelete);    }    public void update(Person personToUpdate) {        Session session = sessionFactory.getCurrentSession();        session.update(personToUpdate);    }}

阅读文档以获取更多信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号