我正在JSF中设计一些数据“块” 我从每个块的Java bean获取数据。 我的问题是我的块从多个表中获取数据。 例如:
描述客户个人数据的块包含:
我必须访问3个单独的表才能填充此块。而不是构建3个不同的DAO(每个表一个),每个块构建一个DAO 不是更好吗?我理解这种方式在一致性方面存在缺点,因为如果一个表将由多个DAO访问,则表的每次更改都必须应用于每个表。但根据我的具体业务逻辑,我的代码将更容易理解。这有什么其他缺点?通常建议创建可以访问许多表的DAO吗?
答案 0 :(得分:5)
我对此问题的解决方案是在getCustomerWithAddressAndCompanyInfo
中实现一个名为CustomerDAO
(或更短的其他内容)的新方法。此方法运行单个查询,连接 customer , address 和 company 表,并通过对数据库的单次访问返回结果。
如果选择访问3个DAO,则必须在数据库上执行3个不同的查询,这可能会产生性能问题。正如你所说,这也可能导致不一致。
另一种方法可能是在单独的类(如CustomerQueries
)中收集此类复杂查询方法,而不是在现有DAO类中实现它们。