请原谅我,如果这个问题太开放或模糊。我在这里的目的只是为了得到你的观点,而不是在这里的正确/错误的答案。我将设计一个基于 java 的报告应用程序,它主要使我的最终用户能够通过选择不同表/视图中存在的各种属性、过滤它们、聚合它们、分组它们等来生成临时报告。我一直在与这里的一群同事进行有趣的对话,是否使用 ORM 进行数据访问和数据库抽象。我理解ORM的主要目的是它必须完全开始让开发人员从对象而不是物理结构(表,列等(的角度思考。我个人觉得,将ORM专门用于临时报告不会有太大用处,纯粹是因为动态性质以及在运行时关联多个表和应用各种聚合的灵活性,动态分组。我当然不认为使用ORM然后构建一大堆本机SQL是一个好主意,因为它使ORM的使用无效。思潮?
通常,此类报告会联接来自多个源(实体(的数据,并添加复杂的过滤和/或聚合。
基于 SQL 的方法更加灵活,性能也好得多。
您仍然可以将 ORM 将 SQL 映射到现有实体,但根据我的经验,需要单独的 DTO 比纯实体更频繁(我会说 90% 的报告列是不同的(。有时更多的列有时更少的列,使用不同的表等。
所以它可以是纯SQL并使用JDBCTemplate进行映射。或者,您可以为查询添加 MyBatis。
ORM很好地涵盖了CRUD
中的CUD
(以及R getById和getAll的最简单情况(。复杂的R(读取(应该在ORM之外完成。
只有我的2美分。