`
xuyuanshuaaa
  • 浏览: 394673 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

oracle hibernate sequence方式

 
阅读更多
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>
   4. generator>
   5. id>

这样再插入数据的时候,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>
   4. id>

然后创建公用的 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>
   4. generator>
   5. id>

2、native:跨数据库时使用,由底层方言产生。

   1. Default.sequence为hibernate_sequence 
   2. <id>
   3. <generator></generator>
   4. id>

注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。如果Oracle中没有该序列,连Oracle数据库时会报错。</id></generator></id></generator></id></generator></id>
分享到:
评论

相关推荐

    使用JDeveloper开发WEB应用时同时使用Oracle的sequence和trigger

    5. **整合到Web应用**:将sequence和trigger的逻辑整合到你的Web应用中,可能涉及到JDBC的PreparedStatement或者ORM框架(如Hibernate、MyBatis)。在处理数据时,确保正确调用了sequence和触发了trigger。 6. **...

    Hibernate Oracle sequence的使用技巧

    本文将详细介绍如何在Hibernate中使用Oracle sequence,以及在使用过程中应注意的一些事项。 首先,我们来看如何为不同的表创建各自的sequence。在Oracle数据库中,你可以通过SQL语句创建一个sequence,例如: ```...

    让CoolSQL支持Oracle Sequence的GeneratedKey,懂的入

    4. **第三方库集成**:如果你的项目已经使用了如MyBatis、Hibernate这样的ORM框架,它们通常已经提供了对Oracle Sequence的支持。你可以利用这些库的方法来处理GeneratedKey,而无需直接依赖CoolSQL的特性。 5. **...

    在hibernate中实现oracle的自动增长

    为了在Hibernate中利用Oracle的序列(sequence)特性,需要在Hibernate的映射文件中进行相应的配置。以下是一个示例,展示了如何为`Department`实体类配置序列生成器(sequence generator): ```xml <hibernate-...

    Hibernate主键策略-sequence

    总结,"Hibernate主键策略-sequence"是利用数据库序列来生成主键的一种方式,具有性能优势但可能涉及跨应用的同步问题。了解和正确使用这一策略,能够帮助开发者更好地设计和实现数据持久化的系统。

    Hibernate主键生成方式

    4. **Sequence方式**:`<generator class="sequence">` 这种方式主要用于支持序列的数据库,如Oracle。开发者可以定义一个序列名称,Hibernate会通过这个序列来生成主键。这种方式确保了主键的顺序性和唯一性,但不...

    hibernate连接oracle数据库.doc

    【hibernate 连接 oracle 数据库】 一、Hibernate 概述 Hibernate 是一个流行的 Java 对象关系映射(ORM)框架,它提供了一种在 Java 应用程序中管理和操作关系数据库的方法。ORM 技术的核心思想是将面向对象的模型...

    hibernate映射主键生成策略native

    通过以上内容可以看出,在Oracle环境下使用Hibernate的“native”策略生成主键是一种高效且灵活的方式。只需要在映射文件中简单地指定`<generator class="native"></generator>`即可实现。同时,还需要注意数据库中...

    hibernate连接oracle数据库.pdf

    ### Hibernate 连接 Oracle 数据库的关键知识点 #### 1. Hibernate 概述 - **ORM概念**:对象关系映射(Object/Relational Mapping,简称ORM)是一种编程技术,用于将对象模型与关系型数据库之间的数据进行转换。...

    Struts2.3.6+hibernate4.3.5+Spring 4.0.5+oracle 10g的集成

    10. **序列(Sequence)**:Oracle中使用序列生成唯一ID,如USER_SEQ,这是主键ID的来源。 在实际开发中,为了确保项目的顺利进行,开发者需要熟悉这些技术的使用,同时关注版本兼容性问题,避免因版本过新或过旧...

    Hibernate笔记 马士兵

    第1课 课程内容 6 第2课 Hibernate UML图 6...4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........

    hibernate源码分析过程

    id 算法可以是整型自增、sql server 等数据库的 identity、Oracle 的 sequence、hilo(高低位)算法、uuid、guid、程序赋值等。复合主键可以组合多个列来唯一标识一个对象。数据版本并发性控制可以使用版本、时间戳...

    Hibernate学习笔记整理

    它提供了一个简洁的方式来访问和操作数据库。 JDBC 的缺点 * 代码结构比较繁琐 * 面向纯 SQL 语句的编程 * 面向过程的编程 * 没有数据缓存 * 事务是自动开启的,可能存在安全性的隐患 Hibernate 的优点 * 是一个...

    Hibernate 帮助文档

    3. **Increment**:对于支持序列(Sequence)的数据库,如Oracle、DB2等,可以选择此方式。这种策略下,每次插入新记录时,主键值会自动递增,但由于依赖于特定的数据库特性,因此不适合多进程并发场景。 4. **...

    Hibernate的generator属性

    例如,在 Oracle 中,它默认会尝试使用 `hibernate_sequence` 序列。 ```xml ``` 4. **hilo**:高低位算法(Hi-Lo Algorithm),它通过组合高位和低位数字来生成 ID,从而减少对数据库的访问。你需要预先创建...

    快速Java和Oracle集成SSH开发注意问题.pdf

    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver <property name="hibernate.connection.url...

Global site tag (gtag.js) - Google Analytics