`
happyqing
  • 浏览: 3197814 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

db2 生成uuid

    博客分类:
  • db2
阅读更多

一、简单的方法

此种方法在快速大量生成时,会有重复

SELECT concat (hex (RAND ()), hex (RAND ())) as uuid FROM SYSIBM.SYSDUMMY1; --32位大写  

select lower(hex(RAND())||hex(RAND())) as uuid from sysibm.sysdummy1;--32位小写

 

二、自定函数,调用java生成uuid

1.创建java类

import java.util.UUID;

import COM.ibm.db2.app.UDF;

public class UDFUUID extends UDF {

	public static String uuid() {
//		UUID uuid = UUID.randomUUID();
//		String uid = uuid.toString().replaceAll("-", "");
//		return uid;
		return UUID.randomUUID().toString().replaceAll("-", "");
	}

}

 

然后用db2自带的jdk(比如$HOME/sqllib/java/jdk/bin)编译成class

查看DB2自带的jdk_path

$ db2 get dbm cfg | grep -i jdk_path

 Java Development Kit installation path       (JDK_PATH) = /home/db2inst4/sqllib/java/jdk64

/home/db2inst4/sqllib/java/jdk64/bin

(/opt/IBM/db2/V9.7/java/jdk64/bin)

/home/db2inst4/sqllib/java/jdk64/bin/java -c /home/myUserName/UDFUUID.java

 

2.创建自定义函数

第一种:

直接把UDFUUID.class拷贝到$HOME/sqllib/function下。

实例用户cp /home/myUserName/UDFUUID.class /home/db2inst4/sqllib/function/UDFUUID.class

不用重启数据库

 

然后执行:

drop function uuid;
create function uuid()
    returns char(32)
    fenced
    variant
    no sql
    language java
    parameter style java
    external name 'UDFUUID!uuid';

 

第二种:

把此类打成jar包(最好用db2的jdk打包),比如叫UUIDUDF.jar 并放在d盘,然后在命令行调用

Db2   call sqlj.install_jar('file:d:\customfunction.jar', 'UUIDUDFJAR')

然后执行

drop function uuid;

create function uuid()

  RETURNS char(32)

  LANGUAGE JAVA

  PARAMETER STYLE JAVA

  NOT DETERMINISTIC NO EXTERNAL ACTION NO SQL

  EXTERNAL NAME 'UUIDUDFJAR:UDFUUID.uuid';

  

最后像使用一般函数一样使用,

values uuid();
select uuid() from SYSIBM.SYSDUMMY1;

参考:

db2 uuid

http://blog.csdn.net/qqqwwwqw/article/details/8055413

DB2基于JAVA的自定义函数(user-defined-function)示例

http://blog.csdn.net/qingsong3333/article/details/60879273

分享到:
评论

相关推荐

    自动生成32位UUID的函数

    直接通过 dbo.[FunGetUUID32](NEWID())即可获取到32位UUID,非常简单方便。

    真实项目中关于主键生成方式的剖析(JPA)

    在Oracle和DB2等数据库中,用户可以自定义创建序列,这提供了更大的灵活性,如从特定数值开始自增。而在MySQL和Microsoft SQL Server等数据库中,系统会自动创建并管理自增主键,无需用户干预。 在Oracle中,创建...

    Hibernate主键生成

    9. **uuid.hex**:生成16进制表示的128位UUID,以32字符的字符串形式表示,具有良好的性能和跨数据库兼容性。 10. **uuid.string**:与uuid.hex类似,但不编码,直接以16字符的字符串表示,可能在某些数据库中存在...

    Hibernate主键生成方式

    - **定义**:采用数据库提供的主键生成机制,例如 DB2、SQL Server 和 MySQL 中的主键生成机制。 - **应用场景**:适用于大多数现代关系型数据库,这些数据库通常提供了内置的自动增长字段功能,可以高效地生成主键...

    hibernate主键生成策略

    - **描述**:`uuid`策略生成一个128位的全局唯一标识符(UUID),适用于需要全球唯一性的场景。 - **实现机制**:默认情况下,UUID由MAC地址、时间戳和其他随机数组成。 - **应用场景**:适用于需要跨系统共享数据的...

    hibernate映射文件--主键生成策略[参考].pdf

    6. identity:该策略采用数据库提供的主键生成机制,如DB2、SQL Server、MySQL中的主键生成机制。 7. sequence:该策略采用数据库提供的sequence机制生成主键,如Oracle中的Sequence。 8. uuid.hex:该策略由...

    hibernate中的generator的生成方式hibernate中的generator的生成方式

    - **UUID.HEX**:生成128位UUID并转换为32位十六进制字符串。 - **UUID.STRING**:生成随机的16字节UUID,并转换为字符串表示。 - **配置示例**: ```xml <generator class="uuid.hex"/> ``` ### 总结 ...

    Java探索之Hibernate主键生成策略详细介绍

    UUID主键生成策略是使用Universally Unique Identifier生成主键。这种策略可以生成唯一的主键,但它有一个缺点,即生成的主键可能很长,影响数据库的性能。 在选择主键生成策略时,需要根据项目的需求和数据库的...

    hibernate各种主健详解

    UUID策略采用128位的通用唯一标识符来生成主键。 **特点:** - 可以保证在时间和空间上的唯一性。 - 生成的UUID占用空间较大,约为16字节。 - 适用于分布式环境,尤其是跨数据库的需求。 **应用场景:** - 分布式...

    Hibernate主键类型说明和配置手册.doc

    1. **uuid.hex**: 这种生成器使用128位算法生成一个32位的字符串。由于其通用性,它适用于所有类型的数据库。在`.hbm.xml`映射文件中,你可以这样配置: ```xml <generator class="uuid.hex"/> ``` 2. **...

    hibernate的映射文件配置

    9. **uuid.string**:生成未编码的UUID(长度16),不适用于PostgreSQL。 10. **foreign**:使用关联对象的标识符作为主键。 示例配置如下: ```xml ``` ### 普通属性配置(property) `property`标签用于映射...

    hbm.xml说明

    - **uuid.string**: 生成基于 UUID 的字符串作为主键,适用于 PostgreSQL 数据库。 例如: ```xml ``` #### 四、property标签 `property` 标签用于定义 Java 类的属性与数据库表中列之间的映射关系。它有以下...

    hibernate.hbm.xml详解

    - `uuid.hex`和`uuid.string`: 生成128位UUID的16进制或非编码版本。 - `foreign`: 使用关联对象的ID作为主键。 - 可自定义主键生成策略,扩展Hibernate类。 2. **普通属性(property)配置**: - `property`...

    java框架之hibernate

    - 使用128位UUID算法生成字符串类型的标识符。 - 具有全局唯一性。 #### 四、联合主键 在Hibernate中,可以使用复合主键来表示具有多个字段作为主键的实体。以下是一种定义复合主键的方法: ```xml ...

    hibernate数据持久化组件

    - **UUID**:使用 UUID 生成器生成全局唯一标识符。 - **Native**:根据使用的数据库类型选择最合适的策略。 - **Assigned**:手动指定主键值。 ##### 2.7 JPA 主键生成策略 - **AUTO**:由实现决定。 - **IDENTITY...

    马士兵hibernate文档.doc

    `GenerationType.HILO`和`GenerationType.UUID`分别用于高效生成唯一ID和生成128位的UUID字符串。 在实际开发中,应根据项目的特性和数据库环境选择合适的策略。例如,如果计划在不同的数据库平台上运行程序,`...

    hibernate概述

    - **uuid**:生成128位的UUID字符串主键。 **Configuration类** `Configuration`类是Hibernate的核心组件,它负责管理和加载配置信息,包括数据库连接参数(URL、用户名、密码)、驱动类、映射文件等。配置完成后...

    微骏CMS内容管理系统 v1.0 RC.rar

    1.系统支持6种主流数据库:MSSQL 2005、mysql 5.x、Oracle、Sybase、DB2、PostgreSQL(其它数据库以后版本推出)。 2.系统支持6种语言:简体中文、繁体中文、英文、**文、西班牙文、俄文。 3.系统自带模块:文章、...

    Hibernate框架讲义.pdf

    - Hibernate定义了多种数据类型和主键生成策略,如assigned(手动指定)、increment(自动递增)、identity(数据库自增长)、sequence(数据库序列)、native(根据数据库类型自动选择)、uuid(128位UUID)、...

Global site tag (gtag.js) - Google Analytics