我(我想)我明白Hibernate让我可以访问关系数据库,就好像我有一个与我定义的某些表的视图相匹配的类。
如何通过课程获取特定查询的结果?特别是,我可以发出复杂的SQL查询,并处理多个结果吗?
使用Hibernate会失去SQL的强大功能吗?
答案 0 :(得分:4)
我(我想)我明白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
运行良好,应该是首选。
答案 1 :(得分:3)
Hibernate3允许您为所有创建,更新,删除和加载操作指定手写SQL,包括存储过程。
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
更多http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html