我对spring + hibernate有疑问 我总是使用hibernate作为我的发展,我生成表格和DAO类的图像 然后在逻辑元素我简单地调用这些方法dao ....
例如UserDao = new UserDao()然后是userdao.persist()...
现在我有春天,我还不明白..
1
他知道自己也在打电话,这是多么好 有dao服务(手动的文字)它不生成 带有hibernate的类dao
2
是春天我不会担心管理会话 示例打开会话,关闭会话commit()...
提前谢谢我想知道Ccool:
答案 0 :(得分:3)
Spring的核心是依赖注入框架。这意味着而不是做
public class MyService
private MyDao dao;
public MyService() {
dao = new MyDao();
}
}
你可以做到
public class MyService
private MyDao dao;
@Autowired
public MyService(MyDao dao) {
this.dao = dao;
}
}
Spring会自动调用构造函数并注入一个MyDao实例。主要好处是代码很容易进行单元测试。
最重要的是,它允许直接注入代理而不是实际的实现。这些代理确实会为您处理事务管理等等(异常转换,安全检查等)。
因此,您只需使用@Transactional
注释服务方法,而不是明确地打开,提交和回滚事务,而Spring将打开,提交/回滚事务。事务上下文将自动传播到嵌套的服务调用。
这个简短的回答只是为了给你一个想法。要了解更多信息,请阅读依赖注入,并阅读Spring文档。
答案 1 :(得分:1)
对服务类使用@Service
等Spring注释,为Dao类使用@Repository
,为动作控制器使用@Controller
。在服务类或方法上使用@Transactional
就足以执行交易。