数据抽象层上的事务(DAL:数据访问层)

时间:2013-11-21 06:57:47

标签: java spring hibernate transactions data-access-layer

目前我正在开发DAL设计,我关注管理业务层(BL)中的事务,同时保持它不知道数据库技术。

例如:我有两个DAO

SalesOrderDAO, SalesOrderItemDAO

在BL的某个时刻,我想在事务中调用update / create方法:

// some where in BL
  SalesOrderDAO soObj = new SalesOrderDAO();
  SalesOrderItemDAO soiObj = new SalesOrderItemDAO();

  //transaction start
  soiObj.create(); // it could be update as well
  soObj.update();  
  //on some condition transaction roll back

  //transaction end

如何实现它?

约束:

  • 我在DAL中使用Hibernate。
  • 我不希望我的BL知道Hibernate。
  • 在DAL之外,没有人知道或应该知道正在使用什么技术 用于访问数据库

(我错过了什么吗?)

1 个答案:

答案 0 :(得分:0)

我做了一些研究(在我收到有关问题的评论后),我发现春天已经得到了我所需要的一切。

说,在BL我们有方法:SomeBLMethod(),它使用SalesOrderDAO,SalesOrderItemDAO和SomeBLMethod进行数据库操作应该在事务下。 我们需要做以下事情来使交易工作:

  • 使用spring @Autowired属性获取SalesOrderDAO,SalesOrderItemDAO实现的对象,并使用这些属性执行db操作。
  • 使用sprint @Transactional属性创建SomeBLMethod事务。
  • SalesOrderDAO的实现,SalesOrderItemDAO应该使用@Autowired SessionFactory对象
  • 我们还需要做一些弹簧配置。(您可以在以下网址中找到)

参考:

PS:我正在添加这个答案以帮助他人。