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

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

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

    ∪∩deniable Design

    個人JAVA版GAE(google app engine),struts2+jpa+jQuery開發,互相交流 http://iunbug.appspot.com/
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Hibernate學習筆記( 三)-- 復合主鍵

    Posted on 2008-09-01 16:43 ∪∩BUG 閱讀(917) 評論(1)  編輯  收藏 所屬分類: Hibernate學習筆記

    關于如何配置請參看:Hibernate學習筆記(一)--用MyEclipse 6.5+MySQL 5.0的環境跑起來
    準備:建表

    用MySQL在名為STMS數據庫中建表personx

     

    src/org.lxh.hibernate2.Personx.java

     1package org.lxh.hibernate2;
     2
     3/**
     4 * @author ∪∩BUG E-mail: tidelgl@163.com
     5 * @version Aug 31, 2008 9:56:51 AM @ POJO類
     6 */

     7
     8//實現復合主鍵應滿足的要求:1.本類必須實現Serializable 接口
     9public class Personx implements java.io.Serializable {
    10
    11    private PersonxId id;
    12    private int age;
    13
    14    public Personx() {
    15    }

    16
    17    public PersonxId getId() {
    18        return this.id;
    19    }

    20
    21    public void setId(PersonxId id) {
    22        this.id = id;
    23    }

    24
    25    public int getAge() {
    26        return age;
    27    }

    28
    29    public void setAge(int age) {
    30        this.age = age;
    31    }

    32}


    通過Hibernate反向工程建立personx表與Personx類的映射

    首先調出DB Browser視圖(Windows—view show—other—MyEclipse datebase—DB Browser)—展開MySQL_localhost至表person—右鍵表personx—Hibernate Reverse Engineering

     
    src/org.lxh.hibernate2.PersonxId.java

     1package org.lxh.hibernate2;
     2
     3import org.apache.commons.lang.builder.EqualsBuilder;
     4import org.apache.commons.lang.builder.HashCodeBuilder;
     5import org.lxh.hibernate1.Personx;
     6
     7/**
     8 * @author ∪∩BUG E-mail: tidelgl@163.com
     9 * @version Aug 31, 2008 9:56:51 AM @ 復合主鍵類
    10 */

    11//實現復合主鍵應滿足的要求:
    12//1.本類必須實現Serializable 接口
    13//2.復寫equals(比較對象)和hashCode(取得Hash編碼)方法(可用commons-lang-2.4.jar來復寫,
    14//下載:http://apache.mirror.phpchina.com/commons/lang/binaries/commons-lang-2.4-bin.zip)
    15public class PersonxId implements java.io.Serializable {
    16
    17    // Fields
    18
    19    private String name;
    20    private String phone;
    21
    22    // Constructors
    23
    24    /** default constructor */
    25    public PersonxId() {
    26    }

    27
    28    /** full constructor */
    29    public PersonxId(String name, String phone) {
    30        this.name = name;
    31        this.phone = phone;
    32    }

    33
    34    // Property accessors
    35
    36    public String getName() {
    37        return this.name;
    38    }

    39
    40    public void setName(String name) {
    41        this.name = name;
    42    }

    43
    44    public String getPhone() {
    45        return this.phone;
    46    }

    47
    48    public void setPhone(String phone) {
    49        this.phone = phone;
    50    }

    51
    52    // 修改復寫equals的方法
    53    public boolean equals(Object obj) {
    54        if (this == obj) {
    55            return true;
    56        }

    57
    58        // 如果不是Personx的實例
    59        if (!(obj instanceof Personx)) {
    60            return false;
    61        }

    62        PersonxId p = (PersonxId) obj;
    63        return new EqualsBuilder().append(this.name, p.getName()).append(
    64                this.phone, p.getPhone()).isEquals();
    65    }

    66
    67    //修改復寫hashCode的方法
    68    public int hashCode() {
    69        return new HashCodeBuilder().append(this.name).append(
    70                this.phone).toHashCode();
    71    }

    72
    73}


    src/org.lxh.hibernate2.PersonxOperate.java

     1package org.lxh.hibernate2;
     2
     3
     4import org.hibernate.Session;
     5import org.hibernate.cfg.Configuration;
     6
     7/**
     8 * @author ∪∩BUG E-mail: tidelgl@163.com
     9 * @version Aug 31, 2008 9:56:51 AM 
    10 * @ 具體操作Hibernate的類
    11 */

    12public class PersonxOperate {
    13    // 在Hibernate中所有的操作都是通過Session來完成
    14    private Session session;
    15
    16    // Session 是一個接口,必須實例化
    17    // 在構造方法中實例實化Session對象
    18    public PersonxOperate() {
    19        // 找到Hibernae配置文件,從全局文件中取出SessionFactory,從sessionFactory中取出一個session
    20        this.session = new Configuration().configure().buildSessionFactory()
    21                .openSession();
    22    }

    23
    24    // 所有的操作都是通過Session進行
    25    // (1)增加操作
    26    public void insert(Personx p) {
    27        // 將數據存放到數據庫中
    28        this.session.save(p);
    29
    30        // 事務提交
    31        this.session.beginTransaction().commit();
    32    }

    33}

    34


    src/org.lxh.hibernate2.Test.java

     1package org.lxh.hibernate2;
     2
     3
     4
     5/** 
     6 * @author ∪∩BUG E-mail: tidelgl@163.com
     7 * @version Aug 31, 2008 9:54:16 AM 
     8 * @測試類
     9 */

    10public class Test {
    11
    12    /**
    13     * @param args
    14     */

    15    public static void main(String[] args) {
    16        Personx p = new Personx();
    17        PersonxId pk = new PersonxId();
    18        
    19        //name,phone在表中是主鍵當插入值為空時將無法插入
    20//        p.setAge(4);
    21//        p.setName("Hibernate");
    22//        p.setPhone("123456");
    23        
    24        p.setAge(2);
    25        pk.setName("MySQL");
    26        pk.setPhone("87654");
    27        p.setId(pk);
    28        PersonxOperate po = new PersonxOperate();
    29        po.insert(p);
    30    }

    31
    32}

    33


    src/org.lxh.hibernate2.Personx.hbm.xml

     1xml version="1.0" encoding="utf-8"?>
     2DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4
     7<hibernate-mapping>
     8    <class name="org.lxh.hibernate2.Personx" table="personx"
     9        catalog="stms">
    10        
    14        <composite-id name="id" class="org.lxh.hibernate2.PersonxId">
    15            <key-property name="name" type="java.lang.String">
    16                <column name="name" length="100" />
    17            key-property>
    18            <key-property name="phone" type="java.lang.String">
    19                <column name="phone" length="50" />
    20            key-property>
    21        composite-id>
    22        <property name="age" type="java.lang.Integer">
    23            <column name="age" />
    24        property>
    25    class>
    26hibernate-mapping>
    27


    src/hibernate.cfg.xml

     1xml version='1.0' encoding='UTF-8'?>
     2DOCTYPE hibernate-configuration PUBLIC
     3          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5
     6
     7<hibernate-configuration>
     8
     9<session-factory>
    10    <property name="connection.username">rootproperty>
    11    <property name="connection.url">
    12        jdbc:mysql://localhost:3306/STMS
    13    property>
    14    <property name="dialect">
    15        org.hibernate.dialect.MySQLDialect
    16    property>
    17    <property name="myeclipse.connection.profile">
    18        MySql_localhost
    19    property>
    20    <property name="connection.password">rootproperty>
    21    <property name="connection.driver_class">
    22        com.mysql.jdbc.Driver
    23    property>
    24    <property name="show_sql">trueproperty>
    25
    26    
    27    <mapping resource="org/lxh/hibernate2/Personx.hbm.xml" />
    28
    29session-factory>
    30
    31hibernate-configuration>


     

    例子結構:


    評論

    # re: Hibernate學習筆記( 三)-- 復合主鍵  回復  更多評論   

    2008-09-01 17:33 by ∪∩BUG
    開始建映射時一直沒有選擇JAVA DATA OBJECT使得沒有得到PersonxId.java,這里我順便把圖給上了.
    主站蜘蛛池模板: 一级毛片视频免费| 在线看片免费人成视久网| 亚洲日韩乱码中文无码蜜桃臀网站| a级日本高清免费看| 亚洲喷奶水中文字幕电影| 亚洲?v女人的天堂在线观看| 在线成人精品国产区免费| 日韩亚洲国产综合高清| 在线精品亚洲一区二区三区 | 1000部拍拍拍18勿入免费凤凰福利| 亚洲午夜精品一区二区麻豆| 亚洲五月综合缴情在线观看| 成人黄动漫画免费网站视频 | 永久免费视频网站在线观看| 国产区图片区小说区亚洲区| 久久精品亚洲精品国产色婷| 伊人久久亚洲综合影院| 日本亚洲免费无线码| A国产一区二区免费入口| 77777亚洲午夜久久多喷| 国产精品亚洲综合一区| 最新猫咪www免费人成| a毛看片免费观看视频| 久久久国产亚洲精品| 久久亚洲国产精品五月天| 免费观看国产小粉嫩喷水| 麻豆高清免费国产一区| 人妻巨大乳hd免费看| 亚洲欧美国产国产综合一区| 精品国产综合成人亚洲区| 国产jizzjizz免费看jizz| 全免费毛片在线播放| 在线观看肉片AV网站免费| 一级美国片免费看| 日韩在线视精品在亚洲| 亚洲日本va在线观看| 老司机亚洲精品影院| 亚洲精品无码国产| 久久久久一级精品亚洲国产成人综合AV区| 久久这里只有精品国产免费10| 久久久精品2019免费观看|