Hibernate提供多少种方式来访问数据库?
例如,我想将CRUD一个对象发送到数据库,我发现:
使用SessionFactory中的会话: session.save(对象); ...
使用Hibernate查询语言。
使用Hibernate Criteria Queries。
使用Native SQL。
但我不知道应该用什么。请列出您在“优先级降低顺序”中访问数据库的做法以及您这样做的原因。
谢谢。
答案 0 :(得分:0)
如果您有ID并想要关联的实体,请使用Session.get()。它的效率很高,并且利用了第一级缓存来避免一次又一次地重新执行查询。
如果您需要通过其他条件获取实体(例如,具有给定名字的所有用户),则使用JPQL查询。它们易于编写,具有可读性,并且比标准查询具有更少的限制。
如果您需要采用各种可选标准(例如复杂的搜索表单),则标准API是作业的工具。但它不能完成JPQL查询所做的一切。还有其他可用的API,如果需要,您可以相对轻松地编写生成动态JPQL查询的API。
如果您有一个无法用JPQL表达的非常复杂的查询,那么请使用SQL。
要将数据写入数据库,通常不应使用查询,除非在非常特定的情况下必须以相同的方式修改许多实体。相反,让实体修改并修改它们。 Hibernate将自动保存新状态。