用于对数据库进行复杂查询的 Hibernate Criteria 类
我正在开发一个基于 Struts2 Framework 的 Web 应用程序,用于实现 MVC,以及 Hibernate3 用于通过 DAO 访问数据库,以及<用于映射数据库中的关系对象的strong>DTO。在 Hibernate 上下文中,我想知道用于进行复杂查询的 Criteria Classes 的范围,以及是否还有其他选项可以执行此类任务?
谢谢。
I'm developing a web application based on Struts2 Framework for implementing the MVC, and Hibernate3 for accesing the database by means of DAOs, and DTOs for mapping the relational objects in the database. In the Hibernate context, I would like to know the reach of the Criteria Clases for making complex queries, and also if there is another option for doing such tasks?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我所说的“到达”是指与 SQL 相关的复杂查询的领域,这些查询可以通过特定 Criteria 对象的链接方法调用来构造(如所讨论的 此处)。
根据我的经验,依赖于结果过滤、排序、投影、分组、逻辑连接或析取语句或子查询的最常见任务可以通过以预期方式改变
Criteria
对象来执行。作为替代方案,您可以使用
Session.createSQLQuery
构建原始 SQL 查询,然后Query.list
或Query.executeUpdate
来执行它。例如:显然,您会想从这个幼稚的示例中进行扩展,但您已经明白了。
By "reach," I'm assuming you mean the domain of complex, SQL-related queries that can be constructed via chaining method calls through a specific Criteria object (as discussed here).
In my experience, most common tasks that rely on result filtering, ordering, projection, grouping, logical conjunctive or disjunctive statements, or subquerying can be carried out by mutating a
Criteria
object in the expected ways.As an alternative, you can use
Session.createSQLQuery
to construct a raw SQL query, thenQuery.list
orQuery.executeUpdate
to execute it. For example:Obviously, you'll want to extend from this naive example, but you get the idea.