我正在使用Spring MVC和Hibernate的CRM项目,我不知道什么是最好的地方使用休眠条件。我想使用hibernate标准,因为我们在表示层上具有搜索功能,用户可以用不同的方式基于大量各种参数进行搜索。有时候我们只需要ID,有时候我们需要属性的一个子集,有时候我们需要加入多个表等等。所以,建立一个像Hibernate的标准这样的结构化标准,而不是传递参数列表,命令,要求参数和搜索限制层到数据层,可以清理代码。但是,我知道在表示层中使用hibernate是不正确的,因为它违背了MVC体系结构。我真的不认为重复hibernate的标准是正确的方法。我能想到的3种方法:我应该在MVC架构中使用Hibernate Criteria?
创建在业务层十几方法,每种类型的搜索请求,并要求每个基于局势表示层这些功能。基本上,这些方法中的每一个都不做任何事情,只是将参数传递给相应的DAO方法,这会创建SQL查询(或条件对象)并从数据库中检索数据。在这种方法中,我最终会得到成百上千的方法,这些方法除了将参数传递给DAO之外不会做任何事情。
在演示文稿(或业务层)中创建类似于Hibernate的Criteria类的类。然后用表示层中的搜索参数启动该对象并将其传递给DAO。 DAO然后基于这个对象创建一个hibernate的标准对象。这种方法涉及到复制hibernate的标准类。
在表示层启动Hibernate的Criteria类并将其传递给DAO以获取搜索结果。
您能否让我知道哪一个是最好的方法?
谢谢
感谢Matthias的回答。第一种方法是我去年开始做的事情,结果在DAO中有大量复杂的方法,因为除了大量的搜索参数之外,我们还需要各种表连接和投影(限制哪些列需要加载) 。所以,我在一段时间后选择了第二种方法,并构建了自己的Criteria类,并开始扩展它,并重复了大部分hibernate的标准功能。所以,我想知道什么是常用的方法。也许在表示层使用Hibernate的Criteria并不是一个坏主意。 – Babak