zoukankan      html  css  js  c++  java
  • Hibernate 学习笔记第三篇

    Hibernate 的高级映射之组件映射

      组件映射:示例一

        一个商品订购系统,一个Custmer 可能有联系地址,还有送货地址,

        那么我们把地址分出一个实体类

        public class Address {

      private String province;

      private String city;

      private String detail;

      private String phone;

           getters();

           setters();

      }

      用户信息是一个执久化类:

      public class Customer {

    private int id;

    private String loginName;

    private String pwd;

    /***联系地址*/

    private Address homeAddress;

    /***送货地址*/

    private Address deliverAddress;

       

       setters();

       getters();

    }

    Customer.cfg.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.wlzx.modle.Customer" table="customer">

    <id name="id" column="id">

    <generator class="native" />

    </id>

    <property name="loginName" />

    <property name="pwd" />

    <!-- 组件映射  -->

    <component name="homeAddress" class="com.wlzx.modle.Address">

    <property name="province" column="home_province"></property>

    <property name="city" column="home_city"></property>

    <property name="detail" column="home_detail" />

    <property name="phone" column="home_phone"></property>

    </component>

    <component name="deliverAddress" class="com.wlzx.modle.Address">

    <property name="province" column="deliver_province"></property>

    <property name="city" column="deliver_city"></property>

    <property name="detail" column="deliver_detail" />

    <property name="phone" column="deliver_phone"></property>

    </component>

    </class>

    </hibernate-mapping>

     映射结果: 映射成一个表

         create table customer (

            id integer not null auto_increment,

            loginName varchar(255),

            pwd varchar(255),

            home_province varchar(255),

            home_city varchar(255),

            home_detail varchar(255),

            home_phone varchar(255),

            deliver_province varchar(255),

            deliver_city varchar(255),

            deliver_detail varchar(255),

            deliver_phone varchar(255),

            primary key (id)

        );

      组件映射:示例二

      一个相册有多个相片:可以把相册定义成 个持久化类,而相片定义成一个组件。

      /****Album.java  相册**/ 

      public class Album {

    private int id;

    private String title;

    private String desc;

    private List<Phone> phones;

    getters();

    setters();

    }

    /***phone.java 照片****/

    public class Phone {

    private String name;

    private String filePath;

    private String desc;

    private int width;

    private int heigth;

     

    getters();

    setters();

    }

    Album.cfg.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.wlzx.modle.Album" table="album">

    <id name="id" column="id">

    <generator class="native" />

    </id>

    <property name="title" />

    <property name="desc" />

    <!-- 组件映射  -->

    <bag name="phones" table="phone">

     <key column="album_id"></key>

      <composite-element class="com.wlzx.modle.Phone">

        <property name="name"></property>

        <property name="filePath" column="file_path"></property>

       <property name="desc"></property>

       <property name="width"></property>

        <property name="heigth"></property>

     </composite-element>

    </bag>

    </class>

    </hibernate-mapping>

    映射结果:映射成两个表

     -- 相册表

     create table album (

            id integer not null auto_increment,

            title varchar(255),

            desc varchar(255),

            primary key (id)

        );

    -- 照片表

    create table phone (

            album_id integer not null,

            name varchar(255),

            file_path varchar(255),

            desc varchar(255),

            width integer,

            heigth integer

        );

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218409.html
Copyright © 2011-2022 走看看