1. 程式人生 > 實用技巧 >hibernate 表結構與資料庫之間的對映檔案

hibernate 表結構與資料庫之間的對映檔案

實體類(User)
package com.hibernate.entity;

import java.io.Serializable;

public class User implements Serializable {
        private String uid;
        private String name;
        private  String password;
        private  Integer age;
        private  Integer version;

    public String getUid() {
        
return uid; } public void setUid(String uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) {
this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } }

對應的配置檔案(User.hbm.xml)
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping >
    <!--  name -> 實體類   table -> 資料表   -->
    <class name="com.hibernate.entity.User" table="user">
        <!-- id主鍵  -->
        <id name="uid" column="uid">
             <!-- 主鍵生成模式  -->
            <generator class="uuid"></generator>
        </id>
        <!--樂觀鎖  防止更新丟失  位置必須在這-->
        <version name="version"></version>

        <property name="name" column="name"/>
        <property name="password" column="password"></property>
        <property name="age" column="age"></property>
    </class>
</hibernate-mapping>

generator 說明
本文講述Hibernate的generator屬性的意義。Generator屬性有7種class,本文簡略描述了這7種class的意義和用法。
Hibernate的Generator屬性有7種class,本文簡略描述了這7種class的意義和用法。
1、identity:用於MySql資料庫。特點:遞增 
< id name="id" column="id">   
    < generator class="identity"/>   
< /id> 
注:對於MySql資料庫使用遞增序列時需要在建表時對主鍵指定為auto_increment屬性。
2、sequence:用於Oracle資料庫 
< id name="id" column="id">   
   < generator class="sequence">   
     < param name="sequence">序列名< /param>   
   < /generator>   
< /id> 
3、native:跨資料庫時使用,由底層方言產生。 
Default.sequence為hibernate_sequence
< id name="id" column="id">   
   < generator class="native"/>   
< /id>   
注:使用native時Hibernate預設會去查詢Oracle中的hibernate_sequence序列。 
如果Oracle中沒有該序列,連Oracle資料庫時會報錯。
4、hilo:通過高低位合成id,先建表hi_value,再建列next_value。必須要有初始值。
< id name="id" column="id">   
    < generator class="hilo">   
      < param name="table">high_val< /param>   
       < param name="column">nextval< /param>   
      < param name="max_lo">5< /param>   
    < /generator>   
< /id>  
5、sequencehilo:同過高低位合成id,建一個sequence序列,不用建表。 
< id name="id" column="id">   
< generator class="hilo">   
< param name="sequence">high_val_seq< /param>   
< param name="max_lo">5< /param>   
< /generator>   
< /id> 
6、assigned:使用者自定義id; 
< id name="id" column="id">   
< generator class="assigned"/>   
< /id> 
7、foreign:用於一對一關係共享主健時,兩id值一樣。

實體類(User)