请教Hibernate问题若干
最近在看夏昕的《深入浅出Hibernate》,有若干问题,向前辈请教
(1)O/R Mapping 还是R/O Mapping,就是E-R建模还是对象建模的问题,毫无疑问,被持久化的应该是对象,数据库表只是一种手段。问题来了,既然我们选择了对象建模,那么按照传统的软件工程理论,数据库设计是在概要设计阶段,而类设计是在详细设计阶段,这样又陷入了数据库设计先行的沼泽了。
(2)Session何时关闭的问题,假如我们现在有3个开发人员分别负责视图层,业务层和持久层。问题来了,如果让session在持久层就被关闭,那么视图层就无法使用hibernate的延迟加载特性了。如果把session的关闭放在一个ServletFilter里控制,虽然视图层可以使用延迟加载特性了,但是Hibernate的代码又侵入了C层了,也就是说,负责写Servlet编写的那个人需要知道持久层的那个人用了Hibernate,换句话了,编写C层的人为了这个ServletFilter得在自己的项目里加入整个Hibernate的jar包。这明显不合理,也不符合软件工程的思想。何时、何地关闭session?这个问题严重。
(3)Hibernate和DAO,书中说并不推荐在使用Hibernate后还使用DAO,这我就不理解了。DAO和Hibernate是不同概念的东东呀,即使用了Hibernate,我也有可能写出很糟糕的代码(比如在业务层里到处混杂Hibernate代码)呀?用DAO不就正是为了让业务和持久层彻底分离么?
(4)暂时没有了,呵呵。