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键生成器 |
@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; } }
@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