- 浏览: 23801 次
- 性别:
- 来自: 济南
最新评论
此处我们只针对常用的数据库类型进行说明,其他的略过:
1 Oracle使用sequence
数据库中的语法如下:
Oracle:create sequence seq_name increment by 1 start with 1;
需要主键值时可以调用seq_name.nextval或者seq_name.curval得到,数据库会帮助我们维护这个sequence序列,保证每次取到的值唯一,如:
Hibernate配置文件:
<id name="id" column="id" type="long">
<column name="id">
<generator class="sequence">
<param name="sequence">seq_name</param>
</generator>
</id>
如果我们没有指定sequence参数,则Hibernate会访问一个默认的sequence,是hibernate_sequence,我们也需要在数据库中建立这个sequence
2 MySQL、SQL Server使用identity
数据库中的语法如下:
MySQL:create table t_user(id int auto_increment primary key, name varchar(20));
SQL Server:create table t_user(id int identity(1,1) primary key, name varchar(20));
<id name="id" column="id" type="long">
<generator class="identity" />
</id>
3 native
会根据底层数据库的能力,从identity、sequence、hilo中选择一个,灵活性更强,但此时,如果选择sequence或者hilo,则所有的表的主键都会从Hibernate默认的sequence或者hilo表中取。并且,有的数据库对于默认情况主键生成测试的支持,效率并不是很高
对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)
<id name="id" column="id">
<generator class="native" />
</id>
1 Oracle使用sequence
数据库中的语法如下:
Oracle:create sequence seq_name increment by 1 start with 1;
需要主键值时可以调用seq_name.nextval或者seq_name.curval得到,数据库会帮助我们维护这个sequence序列,保证每次取到的值唯一,如:
Hibernate配置文件:
<id name="id" column="id" type="long">
<column name="id">
<generator class="sequence">
<param name="sequence">seq_name</param>
</generator>
</id>
如果我们没有指定sequence参数,则Hibernate会访问一个默认的sequence,是hibernate_sequence,我们也需要在数据库中建立这个sequence
2 MySQL、SQL Server使用identity
数据库中的语法如下:
MySQL:create table t_user(id int auto_increment primary key, name varchar(20));
SQL Server:create table t_user(id int identity(1,1) primary key, name varchar(20));
<id name="id" column="id" type="long">
<generator class="identity" />
</id>
3 native
会根据底层数据库的能力,从identity、sequence、hilo中选择一个,灵活性更强,但此时,如果选择sequence或者hilo,则所有的表的主键都会从Hibernate默认的sequence或者hilo表中取。并且,有的数据库对于默认情况主键生成测试的支持,效率并不是很高
对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)
<id name="id" column="id">
<generator class="native" />
</id>
发表评论
-
关于Map常用的方法
2014-02-25 09:25 8231 将Map转换成List // key list List ... -
Effictive Java 读书笔记
2013-10-11 13:51 785Effictive Java 1 考虑用静 ... -
eclipseSSH整合
2013-02-25 16:16 7101 Exception loading sessions fr ... -
简单java ibatis
2012-12-24 13:50 0ibatis小巧,易上手,适合于小型项目开发。 其中对于引用的 ... -
自己做的Ajax小练习
2012-11-13 08:42 6951 关于Ajax三个方法的固定写法 <scri ... -
自己做的web练习
2012-11-12 19:54 677参见附件:service 与client -
struts2小知识点
2012-11-01 10:19 7061 默认的命名空间“ namespace="&qu ... -
2012-10-11 Hibernate杂碎
2012-10-11 18:35 6271 从Hibernate的参考手册中,我们基本可以总结出这样几 ... -
Hibernate BaseDao
2012-10-09 17:16 0package net.comtops.dao.impl; ... -
Hibernate 实现增删改
2012-10-09 16:53 730Configuration conf = null; S ... -
JSP一个正确的验证码
2012-09-27 15:13 709image.jsp页面 <%@ page conte ... -
SQL SERVER分页
2012-09-27 09:51 710分页方案一:(利用Not In和SELECT TOP分页) ... -
JDBC数据库连接
2012-09-10 16:11 547MySQL: String Driver="com ... -
oracle分页以及rownum、rowid的使用
2012-09-09 14:13 756分页存储过程: 1.根据ROWID来分,执行时间0.03秒 c ... -
oracle自增序列
2012-09-08 17:52 595创建自增序列 CREATE SEQUENCE SEQn ... -
ObjectOutputStream
2012-08-02 11:05 943要根据用户选择,向一个文件写一个类(Student)的实例,使 ... -
java
2012-07-30 14:45 411- 第一种情况: Comparator cmp = Col ... -
初始化块和构造器
2012-07-24 08:31 6341,构造器的语法格式 修饰符:public private,p ... -
黑马程序员:学习笔记第一天
2012-03-26 21:28 572android培训、java培训、期待与您交流! ------ ...
相关推荐
### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它极大地简化了 Java 应用程序与数据库之间的交互过程。在使用 Hibernate 进行持久化操作时,经常需要处理实体类...
### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。在 Hibernate 中,...
### 常用Hibernate主键生成策略详解 #### 一、引言 在数据库设计与操作过程中,主键是确保数据唯一性的关键要素之一。在实际应用中,开发者经常需要处理不同类型的数据库,并且需要应对各种不同的主键生成需求。...
### Hibernate 主键生成策略详解 Hibernate 是一款流行的 Java 持久层框架,它提供了对象关系映射(ORM)的功能,使得 Java 开发者能够更高效地与数据库进行交互。在 Hibernate 中,主键生成策略是一项核心功能,...
Hibernate主键生成策略.docHibernate主键生成策略.doc
### hibernate主键生成策略详解 #### 一、assigned **assigned** 主键生成策略意味着主键的值是由外部程序负责生成的,并且在执行 `save()` 方法之前必须明确指定一个值。在这种策略下,Hibernate 不参与主键的...
在Java的持久化框架Hibernate中,主键生成策略是一个至关重要的概念,它决定了数据库表中主键值如何自动生成。主键通常是表中唯一标识记录的一列,对于数据的完整性和一致性至关重要。以下是对Hibernate中主键生成...
### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一种流行的 Java 持久化框架,它简化了数据库操作,并提供了多种主键生成策略。主键是表中的一个或多个字段组合,用于唯一标识表中的每一条记录。...
Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等
### Hibernate 主键生成策略与配置详解 #### 一、概述 在使用Hibernate进行持久化操作时,合理选择和配置主键生成策略对于确保数据的一致性和优化性能至关重要。本文将详细介绍几种常见的主键生成策略,并结合示例...
Hibernate主键生成策略详细介绍 在Java探索中,Hibernate提供了多种主键生成策略,满足不同场景下的需求。下面是对Hibernate主键生成策略的详细介绍: 1. Increment主键生成策略 Increment主键生成策略是由...
### Hibernate主键生成策略 1. **`native`**:类似于JPA的`GenerationType.AUTO`,根据底层数据库选择合适的生成策略。 2. **`identity`**:相当于JPA的`GenerationType.IDENTITY`,适合自动增长主键的数据库。 3...
以下是对Hibernate主键生成策略的详细说明: 1. **assigned**: 这种策略要求用户在调用`save()`方法之前手动设置主键值。Hibernate不参与主键的生成,这意味着主键生成完全由应用控制,可以与数据库无关。这种...