• 组件映射


    组件映射关键字componet

    建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中。

    步骤一:创建EmpHomeAddress和EmpInfo

    public class EmpHomeAddress {

       private String ehomestreet;

       private String ehomecity;

       private String ehomeprovince;

       private String ehomezipcode;

       private EmpInfo empinfo;

    }

    EmpInfo创建如下:

    public class EmpInfo {

       private Integer eid;

       private String ename;

       private EmpHomeAddress ehome;

    }

    步骤二:创建配置文件EmpInfo.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.component">

       <class name="EmpInfo" table="EMPINFO">

           <id name="eid" column="EID">

            <generator class="native"></generator>

           </id>

           <property name="ename" column="ENAME" type="string"></property>

           <component name="ehome" class="EmpHomeAddress">

              <parent name="empinfo"/>

              <property name="ehomestreet" column="EHOMESTREET" type="string"></property>

              <property name="ehomecity" column="EHOMECITY" type="string"></property>

              <property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>

              <property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>

           </component>

       </class>

    </hibernate-mapping>

    步骤三:书写测试类

     @Test

         public void testAdd(){

             Session session = HibernateUtil.getSession();

             Transaction tx=session.beginTransaction();

             //创建一个员工对象

             EmpInfo emp=new EmpInfo();

             emp.setEname("张靓颖");

            

             //创建一个员工地址对象

             EmpHomeAddress address=new EmpHomeAddress();

             address.setEhomecity("北京");

             address.setEhomeprovince("北京");

             address.setEhomestreet("五道口");

             address.setEhomezipcode("100000");

             address.setEmpinfo(emp);

             emp.setEhome(address);

             session.save(emp);

             tx.commit();

             System.out.println("ok===");

         }

  • 相关阅读:
    Redis 缓存 + Spring 的集成示例
    ETCD相关介绍--整体概念及原理方面
    SpringCloud微框架系列整体模块梳理
    win7如何修改磁盘驱动器号,怎么修改磁盘名称
    Android ListView中子控件的状态保存以及点击子控件改变子控件状态
    Android 自己动手写ListView学习其原理 3 ItemClick,ItemLongClick,View复用
    点击itemView选中checkbox
    Android-RecyclerView-Item点击事件设置
    onItemClickListener监听的整个item的点击。如何只监听那个framelayout的点击 onItemClickListener监听的整个item的点击。如何只监听那个framelayout的点击
    listView中setOnItemClickListener和getSelectedItemPosition()取不到position问题
  • 原文地址:https://www.cnblogs.com/myhome-1/p/5842586.html
Copyright © 2020-2023  润新知