冬眠与春天的关系

时间:2013-04-19 16:32:10

标签: spring hibernate

我对spring + hibernate有疑问 我总是使用hibernate作为我的发展,我生成表格和DAO类的图像 然后在逻辑元素我简单地调用这些方法dao ....

  

例如UserDao = new UserDao()然后是userdao.persist()...

现在我有春天,我还不明白..

1

  

他知道自己也在打电话,这是多么好   有dao服务(手动的文字)它不生成   带有hibernate的类dao

2

  

是春天我不会担心管理会话   示例打开会话,关闭会话commit()...

提前谢谢我想知道Ccool:

2 个答案:

答案 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就足以执行交易。