【发布时间】:2011-11-30 17:32:13
【问题描述】:
我尝试自学,但很快就开始意识到,在读完没完没了的书之后,我将了解所有 @Entity 等低级内容,而无需了解顶级。
所以我的理解是:
- 我们通常声明 DAO 接口,在其中定义要在域模型上执行的所有方法。
- 其次,我们编写域模型来表示数据库中的实体。
- 我们编写了 DAO 实现类,它可以使用 Hibernate、JPA、JDBC 或我们现有的任何奇迹并实现我们的 DAO 接口。
(与 Spring 完全连接)
我的问题是指以上几点:
我们为每个领域模型编写单个 DAO 接口?如果我们有参与涉及多个领域模型的交叉行为,我们声明新的对 DAO 接口实现并相应地调用它?例如:“客户从 Stock 订购,Stock 会检查商品是否可用 -> 确认是否可用”那会去哪里?
Hibernate 如何与 MVC 交互?有什么重要的方面需要注意吗?
在我注意到的一本书中:
覆盖等于和哈希码
“在简单的场景中,Hibernate 能够保持实体等价,而不需要对域对象本身进行任何特殊更改。但是,如果您的应用程序需要您将实体添加到 Java 集合中,例如 java.util.Set,或者您计划使用分离的实体,您可能需要覆盖域对象的默认 equals() 和 hashCode() 方法"
也许我不是很了解,什么是分离的实体?那些是我们从 Hibernate 上下文中取出的——实际上只是类的集合?
我想要的是安全地完成 Hibernate 的工作,然后返回一个模型,我将把它提供给 Servlet 并将它委托给适当的视图。我们通过 DAOimpl 类方法的简单返回来提取该模型,还是有点棘手?
如果我要在没有 ORM 框架的情况下做持久层,只使用普通的 JDBC,我的问题是什么?我听说 Hibernate 有一些处理并发请求的智能会话,那么 JDBC 会发生什么?
业务逻辑驻留在哪里?它是 DAOimpl 类吗?
如果我的一些问题是不幸的,我很抱歉,我感谢任何批评和纠正。
谢谢。
【问题讨论】:
标签: hibernate spring persistence