Hibernate中使用Oracle sequence,可能好多人还不了解Hibernate中使用Oracle sequence。下面是具体的操作流程。
一. 为表创建自增长自段有两种,一种是不同的表使用各自的Sequence,方法如下:
1、在Oracle sequence首先创建sequence
1. create sequence seq_id
2. minvalue 1
3. start with 1
4. increment by 1
5. cache 20;
2.在你的hbm.xml中的配置
1. <id>
2. <generator>
3. <param>seq_idparam&gt;
4. generator&gt;
5. id&gt;
这样再插入数据的时候,Hibernate会自动生成如下语句:
1. hibernate: select seq_id.nextval from dual
2. hibernate: insert into YXJK.T_YXJK_WHRYTXL (XM0000, ZW0000, LXDH00, SJHM00, DZYJ00,
3. IP0000, ID0000) values (?, ?, ?, ?, ?, ?, ?)
自动生成下一个序列值,然后将对象插入表中。在使用的时候需要注意,Hibernate对于sequence的主键的要求是一定要是shor,long,或者integer。
二 还有一种方式是使用公共的sequence这各时候可以不指定表使用的sequence,那么相应的hbm.xml中内容是:
1. <id>
2. <generator>
3. generator&gt;
4. id&gt;
然后创建公用的 sequence对象,命名为 hibernate_sequence
1. create sequence hibernate_sequence
2. minvalue 0
3. maxvalue 99999999
4. start with 10000
5. increment by 1;
三 注意事项
如果数据库是从sqlserver等其他数据库移植而来的,那么创建sequence时的起始值应该比当前表中最大的ID值大,否则会出现错误,因为sequence 不会维护是否和导库前现有的值重复。
1、sequence:用于Oracle数据库
1. <id>
2. <generator>
3. <param>序列名param&gt;
4. generator&gt;
5. id&gt;
2、native:跨数据库时使用,由底层方言产生。
1. Default.sequence为hibernate_sequence
2. <id>
3. <generator></generator>
4. id&gt;
注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。如果Oracle中没有该序列,连Oracle数据库时会报错。</id></generator></id></generator></id></generator></id>
分享到:
相关推荐
5. **整合到Web应用**:将sequence和trigger的逻辑整合到你的Web应用中,可能涉及到JDBC的PreparedStatement或者ORM框架(如Hibernate、MyBatis)。在处理数据时,确保正确调用了sequence和触发了trigger。 6. **...
本文将详细介绍如何在Hibernate中使用Oracle sequence,以及在使用过程中应注意的一些事项。 首先,我们来看如何为不同的表创建各自的sequence。在Oracle数据库中,你可以通过SQL语句创建一个sequence,例如: ```...
4. **第三方库集成**:如果你的项目已经使用了如MyBatis、Hibernate这样的ORM框架,它们通常已经提供了对Oracle Sequence的支持。你可以利用这些库的方法来处理GeneratedKey,而无需直接依赖CoolSQL的特性。 5. **...
为了在Hibernate中利用Oracle的序列(sequence)特性,需要在Hibernate的映射文件中进行相应的配置。以下是一个示例,展示了如何为`Department`实体类配置序列生成器(sequence generator): ```xml <hibernate-...
总结,"Hibernate主键策略-sequence"是利用数据库序列来生成主键的一种方式,具有性能优势但可能涉及跨应用的同步问题。了解和正确使用这一策略,能够帮助开发者更好地设计和实现数据持久化的系统。
4. **Sequence方式**:`<generator class="sequence">` 这种方式主要用于支持序列的数据库,如Oracle。开发者可以定义一个序列名称,Hibernate会通过这个序列来生成主键。这种方式确保了主键的顺序性和唯一性,但不...
【hibernate 连接 oracle 数据库】 一、Hibernate 概述 Hibernate 是一个流行的 Java 对象关系映射(ORM)框架,它提供了一种在 Java 应用程序中管理和操作关系数据库的方法。ORM 技术的核心思想是将面向对象的模型...
通过以上内容可以看出,在Oracle环境下使用Hibernate的“native”策略生成主键是一种高效且灵活的方式。只需要在映射文件中简单地指定`<generator class="native"></generator>`即可实现。同时,还需要注意数据库中...
### Hibernate 连接 Oracle 数据库的关键知识点 #### 1. Hibernate 概述 - **ORM概念**:对象关系映射(Object/Relational Mapping,简称ORM)是一种编程技术,用于将对象模型与关系型数据库之间的数据进行转换。...
10. **序列(Sequence)**:Oracle中使用序列生成唯一ID,如USER_SEQ,这是主键ID的来源。 在实际开发中,为了确保项目的顺利进行,开发者需要熟悉这些技术的使用,同时关注版本兼容性问题,避免因版本过新或过旧...
第1课 课程内容 6 第2课 Hibernate UML图 6...4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........
id 算法可以是整型自增、sql server 等数据库的 identity、Oracle 的 sequence、hilo(高低位)算法、uuid、guid、程序赋值等。复合主键可以组合多个列来唯一标识一个对象。数据版本并发性控制可以使用版本、时间戳...
它提供了一个简洁的方式来访问和操作数据库。 JDBC 的缺点 * 代码结构比较繁琐 * 面向纯 SQL 语句的编程 * 面向过程的编程 * 没有数据缓存 * 事务是自动开启的,可能存在安全性的隐患 Hibernate 的优点 * 是一个...
3. **Increment**:对于支持序列(Sequence)的数据库,如Oracle、DB2等,可以选择此方式。这种策略下,每次插入新记录时,主键值会自动递增,但由于依赖于特定的数据库特性,因此不适合多进程并发场景。 4. **...
例如,在 Oracle 中,它默认会尝试使用 `hibernate_sequence` 序列。 ```xml ``` 4. **hilo**:高低位算法(Hi-Lo Algorithm),它通过组合高位和低位数字来生成 ID,从而减少对数据库的访问。你需要预先创建...
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver <property name="hibernate.connection.url...