Hibernate提供多少种访问数据库的方法?

时间:2014-03-30 16:18:37

标签: java mysql hibernate

Hibernate提供多少种方式来访问数据库?

例如,我想将CRUD一个对象发送到数据库,我发现:

  1. 使用SessionFactory中的会话: session.save(对象); ...

  2. 使用Hibernate查询语言。

  3. 使用Hibernate Criteria Queries。

  4. 使用Native SQL。

  5. 但我不知道应该用什么。请列出您在“优先级降低顺序”中访问数据库的做法以及您这样做的原因。

    谢谢。

1 个答案:

答案 0 :(得分:0)

如果您有ID并想要关联的实体,请使用Session.get()。它的效率很高,并且利用了第一级缓存来避免一次又一次地重新执行查询。

如果您需要通过其他条件获取实体(例如,具有给定名字的所有用户),则使用JPQL查询。它们易于编写,具有可读性,并且比标准查询具有更少的限制。

如果您需要采用各种可选标准(例如复杂的搜索表单),则标准API是作业的工具。但它不能完成JPQL查询所做的一切。还有其他可用的API,如果需要,您可以相对轻松地编写生成动态JPQL查询的API。

如果您有一个无法用JPQL表达的非常复杂的查询,那么请使用SQL。

要将数据写入数据库,通常不应使用查询,除非在非常特定的情况下必须以相同的方式修改许多实体。相反,让实体修改并修改它们。 Hibernate将自动保存新状态。