<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ⅴ免费毛片| 拍拍拍又黄又爽无挡视频免费| 亚洲久热无码av中文字幕| 亚洲国产精品lv| 亚洲成a人片在线播放| 日韩免费a级毛片无码a∨| 免费在线看污视频| 成人a毛片视频免费看| 亚洲精品永久在线观看| 亚洲成年人免费网站| 亚洲AV无码国产在丝袜线观看| 亚洲高清无码专区视频| 日韩视频免费一区二区三区| 最近高清中文字幕无吗免费看| 国产一区二区三区免费| 中国人免费观看高清在线观看二区| 苍井空亚洲精品AA片在线播放| 亚洲粉嫩美白在线| 亚洲videos| 亚洲国产片在线观看| 亚洲日韩国产精品无码av| 亚洲视频在线一区| 香蕉视频在线观看亚洲| 久久青青成人亚洲精品| 亚洲精品无码AV人在线播放| 亚洲日韩精品A∨片无码| 中文国产成人精品久久亚洲精品AⅤ无码精品| 国产高清在线免费| 国产美女无遮挡免费视频网站| 日本特黄特黄刺激大片免费| 四虎成人免费网站在线| 免费高清av一区二区三区| 永久免费AV无码网站在线观看| 免费理论片51人人看电影| 日韩免费一级毛片| 国产乱子伦片免费观看中字| 亚洲国产香蕉人人爽成AV片久久 | 国产精品免费播放| 欧洲美熟女乱又伦免费视频| 国产老女人精品免费视频| jjzz亚洲亚洲女人|