在我的项目中,iam即将使用Hibernate,但是会产生混淆:
我在某处阅读:
Hibernate有自己的查询语言,即与数据库无关的hibernate查询语言 因此,如果我们更改数据库,那么我们的应用程序也将起作用,因为HQL与数据库无关 HQL包含与数据库无关的命令
这是否意味着我们在java中使用Hibernate时不必编写存储的进程和视图?
答案 0 :(得分:2)
简短回答:您不必编写任何查询和/或存储过程。 (在应用程序启动期间,您也可以休眠告诉为您创建/更新所有必需的表。)
答案很长:可以在没有任何手动定义查询的情况下使用Hibernate。 (使用EntityManager,您可以简单地告诉hibernate从数据库中获取user.class
的所有内容。)但它也支持HQL和SQL-Queries。
当您稍后切换到另一个数据库时,SQL查询当然会停止工作。 HQL适用于每个数据库,因为hibernate能够将HQL查询转换为任何(受支持的)数据库语言。
但要注意:在我的意见中如果让hibernate完成所有工作,Hibernate会很慢。 (当加载具有复杂关系的实体时,Hibernate会激发大量单个Select Queries)