我正在开发一个使用 Spring MVC 和 Hibernate 的 CRM 项目,但我不知道使用 hibernate 标准的最佳位置是什么。我想使用休眠条件,因为我们在表示层上具有搜索功能,用户可以根据许多不同的参数以不同的方式进行搜索。有时我们只需要 ID,有时我们需要属性的子集,有时我们需要连接多个表等。因此,构建一个结构化的标准,如 hibernate 的标准,而不是从表示中传递参数列表、顺序、所需参数和搜索限制层到数据层,可以清理代码。但是,我知道在表示层使用休眠是不正确的,因为它违反了 MVC 架构。而且我真的不认为复制hibernate的标准是正确的方法。我可以想到3种方法:
在业务层创建了十几个方法,每个类型的搜索请求一个,并根据情况从表示层调用这些函数中的每一个。这些方法中的每一个基本上,除了将参数传递给相应的 DAO 方法之外什么都不做,该方法将创建 SQL 查询(或标准对象)并从数据库中检索数据。在这种方法中,我最终会得到数百个方法,这些方法除了将参数传递给 DAO 之外什么都不做。
在表示(或业务层)中创建一个类似于 Hibernate 的 Criteria 类的类。然后在表现层用搜索参数初始化这个对象并将它传递给DAO。然后 DAO 基于这个对象创建一个休眠的条件对象。这种方法涉及复制hibernate的标准类。
在表现层启动 Hibernate 的 Criteria 类并将其传递给 DAO 以获取搜索结果。
你能告诉我哪个是最好的方法吗?
谢谢