当前位置: 首页 > 编程笔记 >

Hibernate中序列和身份之间的区别

俞飞鸣
2023-03-14
本文向大家介绍Hibernate中序列和身份之间的区别,包括了Hibernate中序列和身份之间的区别的使用技巧和注意事项,需要的朋友参考一下

Hibernate或JPA支持4种不同类型的主键生成器。这些生成器用于在数据库中插入行时生成主键。以下是主键生成器  -

  • GenerationType.AUTO

  • GenerationType。身份

  • GenerationType.SEQUENCE 

  • GenerationType.TABLE

GenerationType。IDENTITY-在identity中,数据库负责自动生成主键。 插入一行而不指定ID的值,然后在插入该行之后,向数据库询问最后生成的ID。Oracle 11g不支持身份键生成器。Oracle 12c支持此功能。 

GenerationType。序列-依次,我们首先向数据库询问序列的下一组,然后插入具有返回序列ID的行。 

序号

GenerationType。身份
GenerationType.SEQUENCE

1个

基本的 

 数据库负责自动生成主键

我们首先要求数据库提供下一个序列集,然后插入带有返回序列ID的行。

2

性能 

它比序列键生成器快 

比身份键生成器慢一点

3

数据库支持 

Oracle 11g不支持身份键生成器

Oracle 11g确实支持SEQUENCE键生成器

GenerationType.IDENTITY的示例

@Entity
public class User {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

GenerationType.SEQUENCE的示例

@Entity
public class User {
   @Id
   @GeneratedValue(strategy = GenerationType.SEQUENCE)
   Integer id;
   String name;  
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
 类似资料:
  • 问题内容: 但没人回答我的下一个问题。经典的hibernate方法使用和JPA 实现之间有什么区别?我听说此JPA实现使用并像包装器一样工作,这是真的吗? 问题答案: 确实。 JPA只是一个API,允许您从使用的持久层中进行抽象。Hibernate提供了充当接口的实现,它使用与Hibernate 相同的基础方法。 这个想法是,例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码。

  • 本文向大家介绍JDBC和Hibernate之间的区别,包括了JDBC和Hibernate之间的区别的使用技巧和注意事项,需要的朋友参考一下 JDBC是Java数据库连接的首字母缩写。它用于将您的应用程序连接到数据库和事务。它是一个开源Java api。   Hibernate还用于将您的应用程序连接到数据库并执行与数据库相关的事务,但是使用不同的方法。它有一个对象关系库,该库将java的对象映射到

  • 本文向大家介绍Hibernate中get()和load()之间的区别,包括了Hibernate中get()和load()之间的区别的使用技巧和注意事项,需要的朋友参考一下 在休眠模式下,and是两种用于获取给定标识符的数据的方法。它们都属于Hibernate会话类。如果给定标识符的会话高速缓存或数据库中没有可用的行,则方法返回null,而方法抛出未找到对象的异常。  序号 键 得到() 加载()

  • 本文向大家介绍Hibernate中save()和persist()之间的区别,包括了Hibernate中save()和persist()之间的区别的使用技巧和注意事项,需要的朋友参考一下 Save()和这两种方法都用于在数据库中保存对象。  根据文档- Save()-坚持给定的瞬时实例,首先分配一个生成的标识符。(或者,如果使用分配的生成器,则使用标识符属性的当前值。)如果关联是用cascade

  • 问题内容: 已经在FlushMode上通过了hibernateapi规范,但没有得到确切的区别。所以请帮忙。 问题答案: 始终表示在对集合运行任何查询或针对数据库重新运行该查询之前。对于自动,我假设幕后有一些“魔术”,它知道大多数数据不会经常更改,因此您不必总是刷新。它还影响交易期间可能发生的频率。我之所以说是可能的,是因为某些消息源说设置flushmode只是hibernate的提示- 但请参见

  • 问题内容: 我的问题很简单:Spring jdbcTemplate和Hibernate之间的主要区别是什么?我们应该考虑使用其中一种的主要原因是什么? 谢谢 问题答案: Hibernate是一个非常庞大的解决方案,具有数据持久性和ORM(包括JPA实现)。另外,还定义了许多方法来管理Hibernate中的实体,如何持久化,事务等。在Hibernate中,您可以使用SQL,HQL或Java批注。JD