<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風細雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

    Hibernate的映射文件

    Hibernate的映射文件

    映射文件也稱映射文檔,用于向Hibernate提供關于將對象持久化到關系數據庫中的信息.
    持久化對象的映射定義可全部存儲在同一個映射文件中,也可將每個對象的映射定義存儲在獨立的文件中.后一種方法較好,因為將大量持久化類的映射定義存儲在一個文件中比較麻煩,建議采用每個類一個文件的方法來組織映射文檔.使用多個映射文件還有一個優點:如果將所有映射定義都存儲到一個文件中,將難以調試和隔離特定類的映射定義錯誤.
    映射文件的命名規則是,使用持久化類的類名,并使用擴展名hbm.xml.
    映射文件需要在hibernate.cfg.xml中注冊,最好與領域對象類放在同一目錄中,這樣修改起來很方便.

    領域對象和類

    public class User{
      // ID
      private String id;
     
      // 名稱
      private String name;
     
      // 密碼
      private String password;
     
      // 郵件
      private String email;
     
      // 上次登錄時間
      private String lastLoginTime;
     
      // 上次登錄ip
      private String lastLoginIp;

      public User(String name,String password,String email){
        this.name=name;
        this.password=password;
        this.email=email;
      }
    }

    <?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.User"
        table="USERTABLE_OKB" lazy="false">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name" column="name" />
        <property name="password" column="pswd" />
        <property name="email" column="email" />
        <property name="lastLoginTime" column="lastLoginTime" />
        <property name="lastLoginIp" column="lastLoginIp" />
      </class></hibernate-mapping>

    hibernate.cfg.xml中的映射文件設置

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
      <session-factory name="java:comp/env/hibernate/SessionFactory">
        <!-- JNDI數據源設置 -->
        <property name="connection.datasource">
          java:comp/env/jdbc/myoracle
        </property>

        <!-- SQL方言,org.hibernate.dialect.OracleDialect適合所有Oracle數據庫 -->
        <property name="dialect">
          org.hibernate.dialect.OracleDialect
        </property>

        <!-- 顯示SQL語句 -->
        <property name="show_sql">true</property>
       
        <!-- SQL語句整形 -->
        <property name="format_sql">true</property>
       
        <!-- 啟動時創建表.這個選項在第一次啟動程序時放開,以后切記關閉 -->
            <!-- <property name="hbm2ddl.auto">create</property>  -->
               
        <!-- 持久化類的映射文件 -->
        <mapping resource="com/sitinspring/domain/User.hbm.xml" />
        <mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
        <mapping resource="com/sitinspring/domain/Article.hbm.xml" />
        <mapping resource="com/sitinspring/domain/Record.hbm.xml" />
      </session-factory>
    </hibernate-configuration>

    映射文件物理位置示例

    映射文件的基本結構

    映射定義以hibernate-mapping元素開始, package屬性設置映射中非限定類名的默認包.設置這個屬性后,對于映射文件中列出的其它持久化類,只需給出類名即可.要引用指定包外的持久化類,必須在映射文件中提供全限定類名.
    在hibernate-mapping標簽之后是class標簽.class標簽開始指定持久化類的映射定義.table屬性指定用于存儲對象狀態的關系表.class元素有很多屬性,下面將逐個介紹.

    ID

    Id元素描述了持久化類的主碼以及他們的值如何生成.每個持久化類必須有一個ID元素,它聲明了關系表的主碼.如右:
    Name屬性指定了持久化類中用于保存主碼值的屬性,該元素表明,User類中有一個名為id的屬性.如果主碼字段與對象屬性不同,則可以使用column屬性.

    <id name="id" column="ID" >
            <generator class="uuid.hex"/>
    </id>


    生成器

    生成器創建持久化類的主碼值.Hibernate提供了多個生成器實現,它們采用了不同的方法來創建主碼值.有的是自增長式的,有點創建十六進制字符串, 還可以讓外界生成并指定對象ID,另外還有一種Select生成器你那個從數據庫觸發器trigger檢索值來獲得主碼值.
    右邊使用了用一個128-bit的UUID算法生成字符串類型的標識符, 這在一個網絡中是唯一的(使用了IP地址)。UUID被編碼為一個32位16進制數字的字符串 .這對字段類型是字符串的id字段特別有效.UUID作為ID字段主鍵是非常合適的,比自動生成的long類型id方式要好。

    UUID示例
    <id name="id" column="ID" >
            <generator class="uuid.hex"/>
    </id>

     

    自動增長的id
    <id name="id" column="ID" type="long">
              <generator class="native"/>
    </id>

    屬性

    在映射定義中,property元素與持久化對象的一個屬性對應,name表示對象的屬性名,column表示對應表中的列(字段),type屬性指定了屬性的對象類型,如果type被忽略的話,Hibernate將使用運行階段反射機制來判斷類型.

    <property name="name" column="name" />
    <property name="password" column="pswd" />
    <property name="email" column="email" />
    <property name="lastLoginTime" column="lastLoginTime" />
    <property name="lastLoginIp" column="lastLoginIp" />

    posted on 2008-04-30 16:43 和風細雨 閱讀(6390) 評論(1)  編輯  收藏 所屬分類: Hibernate

    評論

    # re: Hibernate的映射文件 2009-09-14 13:15 asfas

    sdfaf  回復  更多評論   

    主站蜘蛛池模板: 91亚洲国产成人精品下载| 亚洲热线99精品视频| 亚洲午夜精品在线| 91精品免费久久久久久久久| 亚洲国产一区二区a毛片| 一级毛片免费观看| 久久综合亚洲色HEZYO社区| 亚洲一区免费观看| 亚洲中文无码线在线观看| 午夜国产精品免费观看 | 国内外成人免费视频| 亚洲午夜成人精品无码色欲| 免费看又爽又黄禁片视频1000| 国产尤物在线视精品在亚洲| 亚洲XX00视频| 免费网站观看WWW在线观看| 亚洲成在人线av| av无码国产在线看免费网站| 亚洲中文字幕乱码AV波多JI| 免费人妻av无码专区| 13小箩利洗澡无码视频网站免费| 亚洲国产一区二区三区青草影视| 成年网站免费视频A在线双飞| 亚洲欧美一区二区三区日产| 亚洲精品国产V片在线观看| 日韩精品免费视频| 97se亚洲国产综合自在线| 亚洲国产精品一区二区九九| 日韩电影免费观看| 亚洲国产精品ⅴa在线观看| 亚洲中文字幕无码一区二区三区| 蜜桃成人无码区免费视频网站| 亚洲深深色噜噜狠狠网站| 亚洲午夜日韩高清一区| 99爱在线精品视频免费观看9| 亚洲色在线无码国产精品不卡| 亚洲中文字幕无码爆乳av中文 | 亚洲无码日韩精品第一页| 色欲国产麻豆一精品一AV一免费 | 国产亚洲福利精品一区| 在线天堂免费观看.WWW|