【发布时间】:2009-12-09 11:33:26
【问题描述】:
我有一个连接 5 个表的查询。 然后我用我需要的列值填充我的手工对象。
这里有哪些使用特定工具解决该问题的普遍解决方案?有这样的工具吗?
我才刚刚开始学习 Hibernate,所以我的问题是:Hibernate 是解决这个问题的正确决定吗?
Hibernate 将一个表映射到一个类。所以,如果我有 5 个类而不是 5 个表,那没有什么区别。还是很难将查询结果加入到一个类中
可以使用休眠将查询映射到我预先定义的结构(类)中,就像我们对表映射所做的那样?或者更好的是,它能否像逆向工程一样将查询结果映射到有意义的字段中[自动创建带有字段的类]?
我一直在考虑视图,但是.. 每次我们需要复杂查询时创建一个新视图.. 太冗长了。
正如 S.Lott 所问,这是一个简单版本的问题:
一般问题:
选择 A.field_a、B.field_b、C.field_c from table_a A 内连接 table_b B 内连接 table_c C 在哪里 ...每个表包含 100 个字段 查询返回 3 个字段,但每个字段都属于唯一的表
如何以 OO 风格解决这个问题? 设计一个新对象,其属性对应于查询的返回值。
我想知道这是否是正确的 [也是唯一可能的] 决定,是否有任何共同的解决方案。
另见我的 cmets。
【问题讨论】:
-
-1:这个问题的标题含糊不清。请更新标题以反映您真的想知道。 “映射”太简单了。这个问题比这更深。
-
我想知道它通常是如何制作的,不仅仅是在我的特殊情况下。 ORM 可能不是这里的真实情况,我提到了 Hibernate,因为我怀疑它可以在这种情况下使用。但它也可以手工制作。 ORM 赞扬表和类之间 1:1 关系的概念[可能有细微的差异,例如字段名和字段数]。在我的情况下可能会使用它,但应该使用它吗?
-
@EugeneP:不要要求我们阅读您的 cmets。更新您的问题。问题永远存在,很多很多人会阅读这个问题。请花时间回答正确的问题。绝对正确。如果您必须关闭它才能重试,那很好。但是,您的 cmets 将被忽略。