国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hibernate適配DM數(shù)據(jù)庫主鍵自增配置

這篇具有很好參考價值的文章主要介紹了Hibernate適配DM數(shù)據(jù)庫主鍵自增配置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、簡介

hibernate有多種生成主鍵策略,例如assigned、increment、hilo、seqhilo、sequence、identity、native、uuid、guid等方法,其中native由hibernate根據(jù)使用的數(shù)據(jù)庫自行判斷采用identity、hilo、sequence其中一種作為主鍵生成方式,靈活性很強。如果能支持identity則使用identity,如果支持sequence則使用sequence。MySQL使用identity,Oracle使用sequence。
對應hbm.xml中的配置也相對簡單,如下。
Hibernate適配DM數(shù)據(jù)庫主鍵自增配置

二、項目加載驅動包

在項目開發(fā)/移植階段到達夢數(shù)據(jù)庫 需要替換為達夢的jdbc驅動包以及dialect包。
驅動包在達夢的安裝目錄\dmdbms\drivers\jdbc下。版本的對應關系查看readme.txt。

舉例:hibernate.cfg.xml

       <!-- 這個屬性使 Hibernate 應用為被選擇的數(shù)據(jù)庫生成適當?shù)?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 -->
        <!-- 數(shù)據(jù)庫實例的 JDBC URL -->
        <property name="hibernate.connection.url">jdbc:dm://192.168.11.123:5236</property>

        <!-- 數(shù)據(jù)庫用戶名 -->
        <property name="hibernate.connection.username">SYSDBA</property>

        <!-- 數(shù)據(jù)庫密碼 -->
        <property name="hibernate.connection.password">SYSDBA</property>

三、主鍵生成策略

在達夢數(shù)據(jù)庫中主要分為兩種

  • 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>

3.表注解自增

@GeneratedValue,JPA通用策略生成器 。
        JPA提供的四種標準用法為TABLE,SEQUENCE,IDENTITY,AUTO. 
          TABLE:使用一個特定的數(shù)據(jù)庫表格來保存主鍵。 
          SEQUENCE:根據(jù)底層數(shù)據(jù)庫的序列來生成主鍵,條件是數(shù)據(jù)庫支持序列。 

@Id  
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")  
@SequenceGenerator(name="payablemoney_seq", sequenceName="seq_payment")  

4. generator class=“native”

<id name="id" column="id">
<generator class="native" />
</id>

但是這個配置是不能在DM數(shù)據(jù)庫中識別的,會直接報錯,違反非空約束。所以需要單獨指定成使用序列作為主鍵的方式,同時要在數(shù)據(jù)庫中先手動創(chuàng)建對應的序列,再進行序列名配置后引用。

CREATE SEQUENCE HIBERNATE_SEQUENCE INCREMENT BY 1 START WITH 1 CACHE 20;

    <id name="ID_" type="long">
      <column name="ID_"/>
      <generator class="native">
      	<param name="sequence">HIBERNATE_SEQUENCE</param>
      </generator>
    </id>

在達夢數(shù)據(jù)庫中,native 默認使用的是自增列的方式,需要修改對應的表結構,將相應的列改為自增列即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-423216.html

到了這里,關于Hibernate適配DM數(shù)據(jù)庫主鍵自增配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 通過DBeaver 給Postgre SQL表 設置主鍵自增

    通過DBeaver 給Postgre SQL表 設置主鍵自增

    1.創(chuàng)建表 CREATE TABLE public.company ( id int4 NOT NULL , name?text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入數(shù)據(jù)(不傳入id) INSERT INTO public.company (name, age, address, salary, join_date) VALUES(\\\'Kobe\\\', 20, \\\'Lake\\\', 10000, \\\'1996-07-13\\\'); ?

    2024年02月12日
    瀏覽(20)
  • mysql高并發(fā)下主鍵自增打來的問題

    在一般情況下,在新增領域對象后,都需要獲取對應的主鍵值。使用應用層來維護主鍵,在一定程度上有利于程序性能的優(yōu)化和應用移植性的提高。在采用數(shù)據(jù)庫自增主鍵的方案里,如果JDBC驅動不能綁定新增記錄對應的主鍵,就需要手工執(zhí)行查詢語句以獲取對應的主鍵值,對

    2024年02月13日
    瀏覽(16)
  • mybatis實戰(zhàn):四、insert 用法(普通插入、返回主鍵自增的值)

    1.UserMapper.xml 1.指定特殊數(shù)據(jù)類型 2.<insert >元素,這個標簽包含如下屬性 ?2. UserMapperTest ?1.只插入一條數(shù)據(jù) 2.回滾(不寫入數(shù)據(jù)庫) 3.插入后判斷是否為空(為空/不為空,拋異常) 3.UserMapper 方法一: 使用 JDBC 方式返回主鍵自增的值 ?方法二: 使用 selectKey 返回主鍵的值

    2024年02月07日
    瀏覽(23)
  • 【DM】達夢數(shù)據(jù)庫與MySQL適配

    【DM】達夢數(shù)據(jù)庫與MySQL適配

    新手直接看達夢入門技術文檔即可 1、介紹 達夢數(shù)據(jù)庫管理系統(tǒng)是達夢公司推出的具有完全自主知識產(chǎn)權的高性能數(shù)據(jù)庫管理系統(tǒng),簡稱DM,它具有如下特點: 通用性、高性能、高可用、跨平臺、高可擴展 2、與MySQL的區(qū)別 (1)創(chuàng)建表的時候,不支持在列的后面直接加 comme

    2024年02月14日
    瀏覽(23)
  • 達夢(DM)數(shù)據(jù)庫存儲加密

    達夢(DM)數(shù)據(jù)庫存儲加密

    這里主要講述DM數(shù)據(jù)庫存儲加密中比較常用也比較容易理解的非透明加密相關內(nèi)容。 引用官方的話說:DM 對非透明加密的支持是通過對用戶提供加解密接口實現(xiàn)的。用戶在使用非透明加密時,需要提供密鑰并調(diào)用加解密接口。采用非透明加密可以保證個人私密數(shù)據(jù)不被包括

    2024年04月29日
    瀏覽(27)
  • 達蒙DM數(shù)據(jù)庫使用經(jīng)驗

    達蒙DM數(shù)據(jù)庫使用經(jīng)驗

    DM數(shù)據(jù)庫管理工具為tool目錄下的 注:dm數(shù)據(jù)庫無法在建表的同時為字段名添加注釋 將表中的某列轉換成自增列且以前存在的數(shù)據(jù)不變,從當前最大值開始實現(xiàn)自增,以下是解決步驟: 1,創(chuàng)建自增序列(從1開始自增1): 2,獲取序列下一個值 3,獲取序列當前值 4,查看序列狀態(tài)

    2024年02月13日
    瀏覽(23)
  • 數(shù)據(jù)庫應用:kylin 部署 達夢數(shù)據(jù)庫DM8

    數(shù)據(jù)庫應用:kylin 部署 達夢數(shù)據(jù)庫DM8

    目錄 ??一、實驗 1.環(huán)境 2.部署前規(guī)劃 3.部署達夢數(shù)據(jù)庫DM8 4.創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)庫事例管理 5.達夢數(shù)據(jù)庫的基本操作 二、問題 1.xhost命令報錯 2.執(zhí)行安裝程序DMInstall.bin?報錯 3.解壓安裝程序報錯 4.安裝程序找不到文件 5.圖像化界面打不開 6.安裝內(nèi)存太小 7.打開圖形化界面報錯

    2024年02月19日
    瀏覽(26)
  • 數(shù)據(jù)庫----------約束、主鍵約束

    數(shù)據(jù)庫----------約束、主鍵約束

    目錄 1.簡介 1.概念 2.作用 3.分類 2.主鍵約束? 1.概念 2.操作 1.添加單列主鍵 2.添加多列聯(lián)合主鍵 3.?通過修改表結構添加主鍵 4.刪除主鍵 3.自增長約束(auto_increment) 1.概念 2.特點 3.指定自增字段初始值 4.delete和truncate在刪除后自增列的變化 4.非空約束(not null) 1.概念 2.語法 3.添加

    2023年04月09日
    瀏覽(25)
  • SQLServer數(shù)據(jù)庫給某個字段添加自增

    SQLServer數(shù)據(jù)庫給某個字段添加自增

    1、啟動Microsoft SQL Server Management Studio 18工具 Navicat好像不能設置字段的自增…,所以用了Management Studio 18 2、工具 選項 設計器 3、修改這個字段為自增,并保存! 4、測試,發(fā)現(xiàn)此字段自增成功!

    2024年02月15日
    瀏覽(30)
  • 碎嘴子教學mysql數(shù)據(jù)庫自增

    主要分為兩種方式: 1.建表時設置自增 2.建表后設置自增 方式一:建表時設置

    2024年02月05日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包