`

Oracle 主键自增 Native Sequence两种方式(转)

阅读更多

根据hibernate的文档,有两种方式实现实体对象的主键自动增长。 
第一种:设置ID的增长策略是sequence,同时指定sequence的名字,最好每个表建一个sequence,此种做法就如同MY-SQL中的自动增长一样,不需要创建触发器,具体的oracle数据库脚本及hibernate配置文件如下:

[1]oracle数据库创建sequence:

-- Create sequence 
create sequence TYPEID
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

以上属性,大都看一下中文就能明白其中的意思,唯独最后一个:cache是多少数字放进数据库缓存等待程序去调用它们来命名ID。如果cache设置数字太大,那么ID就会有跳序号的可能(比如调用了1-18的序号就关闭与数据库的会话,那么19和20将会被丢弃,下次取序号就会跳到21开始);而如果设置数字太小,缓存log将会很多。

[2]hibernate映射文件的配置:

<id name="id" type="java.lang.Integer">
            <column name="ID" length="27" />
            <generator class="sequence" >
                <param name="sequence">TYPEID</param>
            </generator>
        </id>
        <property name="telephone" type="java.lang.String">
            <column name="TELEPHONE" length="12" not-null="true" />
        </property>

 在hibernate映射文件中,对ID的生成策略选择sequence,指定sequence的名字TYPEID就可以了,当你保存新对象的时候,hibernate会自动取得从start with开始的序号作为新对象的ID保存到数据库,所以不需要再使用触发器再来生成新记录的ID!

 

第二种(本人尚未试用,以后更新)

分享到:
评论

相关推荐

    oracle 主键自增 sequence

    oracle 主键自增 给你个例子吧:看看肯定明白了!!! 首先,你要有一张表! CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(10), ADDRESS VARCHAR(50) ); ...

    oracle中的sequence实现主键增长

    教你如何使用oracle中的sequence,实现主键自动增长

    Oracle创建自增字段sequence

    Oracle中没有sqlserver中那么方便的自增序列,如果想要达到sqlserver中那种效果,也不是很麻烦,需要创建一个自增序列SEQUENCE,然后建一个触发器即可。  CREATE SEQUENCE emp_sequence  INCREMENT BY 1 — ...

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 很有用哦

    oracle数据库主键自增并且返回主键值

    create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 order ##确保按照请求次序生成整数 【不常用的设置】....

    如何实现Oracle自增,序列,触发器都有

    如何实现Oracle主键自增,通过写sequence和触发器,很全面,绝对帮你解决问题

    oracle实现自增

    oracle 实现自增;使用sequence,和trigger实现表字段自增

    MyBatis Oracle 自增序列的实现方法

    给大家分享MyBatis Oracle 自增序列的实现方法及mybatis配置oracle的主键自增长的方法,非常不错具有一定的参考借鉴价值,感兴趣的朋友一起看看吧

    sql 主键自增

    在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。 创建序列SEQ_ID,起始值为1,增量为1 create sequence SEQ_ID increment by 1 start with 1

    oracle设置主键自动增长

    oracle设置主键自动增长 首先,你要有一张表! 然后,你需要一个自定义的sequence  以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle...

    oracle表的id自增sql

    oracle 数据库建表id自增的sql语句创建sequence的名称,S_out_gold这个为

    Oracle数据库中创建自增主键的实例教程

    在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现。 创建表Student Create Table Student( id number(12) primary ...

    Oracle创建自增字段–ORACLE SEQUENCE的简单使用介绍

    先假设有这么一个表: 代码... 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREAT

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    主要介绍了浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Oracle创建主键自增表(sql语句实现)及触发器应用

    1、创建表 代码如下: createtableTest_Increase( useridnumber(10)NOTNULLprimarykey,/*主键,自动增加*/ usernamevarchar2(20) ); 2、创建自动增长序列 代码如下: CREATESEQUENCETestIncrease_Sequence INCREMENTBY...

    Oracle在表上建立自增字段的方法

     primary key(id) //id为主键,下面的方法把它设为自增字段  )  1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1  CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH 1;  2、在表...

    Oracle创建自增字段--ORACLE SEQUENCE的简单使用介绍

    在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方接下来为大家介绍下Oracle创建自增字段方法感兴趣的各位可不要错过了哈

    oracle迁移mysql自增序列问题

    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql&gt; CREATE TABLE test -&gt; ( ...

    Hibernate主键策略-sequence

    NULL 博文链接:https://taomujian.iteye.com/blog/338342

    Oracle sequence 重置(失效恢复)

    在Oracle数据库移植过程中,sequence可能失效,本资源可使失效的sequence重新恢复作用

Global site tag (gtag.js) - Google Analytics