我是Spring的新手,我只是阅读有关Hibernate-Spring集成(版本3)的文档.我不明白为什么自动事务管理(声明性管理)应用于文档中的"服务",而不是直接应用于DAO实现.特别是我不知道服务意味着什么,与DAO相比有什么不同,如果真的需要提供与Spring的Hibernate集成.
我试图做的只是使用Hibernate DAO实现并在XML中配置以在实例化时设置会话工厂.无论如何,抛出异常,因为Spring不允许非事务性的hibernate访问.所以为了添加事务访问,我是否必须添加"服务"的东西?这与简单的DAO有什么不同?
我不能说Spring,但我会以一般方式回答这个问题:
特别是我不知道服务意味着什么,与DAO相比有什么不同
想象一下经典的"汇款"场景,其中一位客户向第二位客户汇款.这里有一个"服务"(汇款),分两步完成:从账户A中扣除资金,向账户B汇款.这两个步骤应该在一个交易中,即使每个都执行数据库操作.如果在第二步中交易失败,则第一步也应该取消.
在这种情况下,服务将如下所示:
transfer(Account to, Account from, double value)
Run Code Online (Sandbox Code Playgroud)
而DAO看起来像这样:
updateBalance(Account account, double amount)
Run Code Online (Sandbox Code Playgroud)
该transfer方法将调用updateBalance两次,每次操作一次.
这些天我对Spring不是很熟悉,所以,我不确定Spring是否会要求你的应用程序有一个额外的层,如果你的业务需求不需要的话.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |