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

        );

  • 相关阅读:
    互联网博物馆
    CSS简介和CSS选择器
    perl 面向对象 use base
    mysql tcp 4层负载
    mysql tcp 4层负载
    mysql Emoji表情字符集转换
    mysql Emoji表情字符集转换
    html submit 登录
    html submit 登录
    haroxy hdr
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218409.html
Copyright © 2011-2022 走看看