Hibernate...如何进行数据库/SQL 查询?

Posted

技术标签:

【中文标题】Hibernate...如何进行数据库/SQL 查询?【英文标题】:Hibernate... how does one do database/SQL queries? 【发布时间】:2010-07-16 09:17:04 【问题描述】:

我(我想我)理解 Hibernate 让我可以访问关系数据库,就好像我有一个与我为某些表定义的任何视图相匹配的类一样。

如何让特定查询的结果可通过类访问?特别是,我可以发出复杂​​的 SQL 查询并处理多个结果吗?

使用 Hibernate 会失去 SQL 的任何功能吗?

【问题讨论】:

【参考方案1】:

我(我想我)理解 Hibernate 让我可以访问关系数据库,就好像我有一个与我为某些表定义的任何视图相匹配的类一样。

Hibernate 提供了一个框架,允许将对象模型映射到您的数据库和一个 API 以通过该对象模型操作数据。

如何让特定查询的结果可通过类访问?特别是,我可以发出复杂​​的 SQL 查询并处理多个结果吗?

我不确定我是否理解了这个问题,但让我们看看。 Hibernate 方法是使用HQL (Hibernate Query Language) queries 和/或Criteria queries 来执行对象模型上的查询

但您也可以使用 Native SQL(牺牲可移植性)返回 entities、multiple entities 甚至 non-managed entities(另请参阅 Hibernate 3.2: Transformers for HQL and SQL)。

使用 Hibernate 会失去 SQL 的任何功能吗?

HQL 和 Criteria API 非常强大 - 并且可移植 - 并且会为您的后端生成正确的 SQL。如果需要,您仍然可以使用已经提到的本机 SQL 查询。但在大多数情况下,HQL 和Criteria 运行良好,应该首选。

另见

14. HQL: The Hibernate Query Language 15. Criteria Queries 16. Native SQL

【讨论】:

【参考方案2】:

Hibernate3 允许您为所有创建、更新、删除和加载操作指定手写 SQL,包括存储过程。

 sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();

更多信息请访问http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html

【讨论】:

以上是关于Hibernate...如何进行数据库/SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章

在hibernate中用到的内连接查到数据怎么用

Hibernate的增删改查操作

Hibernate...如何进行数据库/SQL 查询?

对Hibernate的简单认识

hibernate框架

hibernate的增删改查