我希望有关使用HQL或SQL语句查询数据库的意见,包括简单性,复杂性和性能。
答案 0 :(得分:8)
使用HQL,您可以在基于类的域级别上运行,并在关系模型级别上使用SQL。使用HQL,您可以在查询和SQL中遍历您的域模型,您需要创建具有连接和连接条件的链接,这更加详细。
使用HQL的投影也更简单,因为您可以直接获取对象,而使用SQL可以获得关系数据的表格视图。
优化HQL更加困难,因为您需要在多个级别(域级,Hibernate,生成的SQL,关系模型)上运行,但大多数情况下您可以使用更少的代码进行管理。
SQL结果不是类型安全的,但这在Grails上下文中并不像在Java上下文中那么重要。