快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → Hibernate适配DM数据库主键自增配置

Hibernate适配DM数据库主键自增配置

时间:2022-09-24 22:36:04人气:作者:快盘下载我要评论

一、简介

hibernate有多种生成主键策略;例如assigned、increment、hilo、seqhilo、sequence、identity、native、uuid、guid等方法;其中native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式;灵活性很强。如果能支持identity则使用identity;如果支持sequence则使用sequence。mysql使用identity;Oracle使用sequence。
对应hbm.xml中的配置也相对简单;如下。
Hibernate适配DM数据库主键自增配置

二、项目加载驱动包

在项目开发/移植阶段到达梦数据库 需要替换为达梦的jdbc驱动包以及dialect包。
驱动包在达梦的安装目录dmdbmsdriversjdbc下。版本的对应关系查看readme.txt。

举例;hibernate.cfg.xml

       <!-- 这个属性使 Hibernate 应用为被选择的数据库生成适当的 SQL -->
        <property name=;hibernate.dialect;>org.hibernate.dialect.DmDialect</property>

        <!-- JDBC 驱动程序类 -->
        <property name=;hibernate.connection.driver_class;>dm.jdbc.driver.DmDriver</property>

        <!-- Assume test is the database name -->
        <!-- 数据库实例的 JDBC URL -->
        <property name=;hibernate.connection.url;>jdbc:dm://192.168.11.123:5236</property>

        <!-- 数据库用户名 -->
        <property name=;hibernate.connection.username;>SYSDBA</property>

        <!-- 数据库密码 -->
        <property name=;hibernate.connection.password;>SYSDBA</property>

三、主键生成策略

在达梦数据库中主要分为两种

identity默认使用的是自增列的方式;需要修改对应的表结构;将相应的列改为自增列;即可。采用的是sequence序列自增的方式;

1. identity方式

Numebr类型不支持自增;IDENTITY适用于INT类型和BIGINT类型的列

表结构

CREATE TABLE ;DM_BRAND;
(
    ;ID; INT IDENTITY(1, 1) NOT NULL,
    ;BRAND_ID; VARCHAR(50),
    ;BRAND_NAME; VARCHAR(50),
    ;BRAND_JC; CHAR(10),
    CLUSTER PRIMARY KEY(;ID;));

hbm.xml

<?xml version=;1.0; encoding=;utf-8;?>
<!DOCTYPE hibernate-mapping PUBLIC
        ;-//Hibernate/Hibernate Mapping DTD 3.0//EN;
        ;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd;>
<hibernate-mapping>
    <class name=;com.dameng.entity.DMBRAND; table=;DM_BRAND;>
        <id name=;ID; type=;java.lang.Integer;>
            <column name=;ID; />
            <generator class=;identity; />
        </id>
        <property name=;BRAND_ID; type=;java.lang.String;>
            <column name=;BRAND_ID; length=;50; not-null=;true; />
        </property>
        <property name=;BRAND_NAME; type=;java.lang.String;>
            <column name=;BRAND_NAME; length=;50; not-null=;true; />
        </property>
        <property name=;BRAND_JC; type=;java.lang.String;>
            <column name=;BRAND_JC; length=;50; not-null=;true; />
        </property>
    </class>
</hibernate-mapping>

2. sequence方式

表结构

CREATE TABLE ;DM_BRAND_SEQ;
(
    ;ID; INT ,
    ;BRAND_ID; VARCHAR(50),
    ;BRAND_NAME; VARCHAR(50),
    ;BRAND_JC; CHAR(10),
    CLUSTER PRIMARY KEY(;ID;));

CREATE SEQUENCE ;SEQ_BRAND;
            INCREMENT BY 1
            START WITH 1
            MAXVALUE 9999
            MINVALUE 1
            CYCLE
            NOCACHE
            ORDER
            ;

hbm.xml

<?xml version=;1.0; encoding=;utf-8;?>
<!DOCTYPE hibernate-mapping PUBLIC
        ;-//Hibernate/Hibernate Mapping DTD 3.0//EN;
        ;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd;>
<hibernate-mapping>
    <class name=;com.dameng.entity.DMBRANDSEQ; table=;DM_BRAND_SEQ;>
        <id name=;ID; type=;java.lang.Integer;>
            <column name=;ID; />
            <generator class=;sequence;>	<!--指定此字段使用序列增长策略-->
                <param name=;sequence;>SEQ_BRAND</param>
            </generator>

        </id>
        <property name=;BRAND_ID; type=;java.lang.String;>
            <column name=;BRAND_ID; length=;50; not-null=;true; />
        </property>
        <property name=;BRAND_NAME; type=;java.lang.String;>
            <column name=;BRAND_NAME; length=;50; not-null=;true; />
        </property>
        <property name=;BRAND_JC; type=;java.lang.String;>
            <column name=;BRAND_JC; length=;50; not-null=;true; />
        </property>
    </class>
</hibernate-mapping>

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。