zoukankan      html  css  js  c++  java
  • 关联映射

    关联映射
     
    含义:将对象模型之间的关系 映射至数据库关系模型 。
     
    1.配置
      市 多方  city_id city_name prov_id
      省 一方  prov_id  prov_name
     
      多对一 :可以从多方导航至 一方
     
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.it.bean">
        <class name="City" table="city"> 
            <id name="city_id" column="city_id">
                <!-- 主键生成策略 -->
                <generator class="assigned"></generator>
            </id>
            <property name="city_name" column="city_name "></property>
              <!--多对一关联映射-->
            <property name="prov" column="prov _id" ></property>
         /class>
    </hibernate-mapping>
     
     
      一对多 :可以从一方导航至 多方
     
     
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.it.bean">
        <class name="Pov" table="prov"> 
            <id name="prov_id" column="prov_id ">
                <!-- 主键生成策略 -->
                <generator class="assigned"></generator>
            </id>
            <property name="prov_name" column="prov_name "></property>
              <!--一对多关联映射-->
            <set name ="citys" table="city" inverse="true">      
                   <key cloumn="prov_id"></key>          //查询外键
                   <one-to-many class="com.it.bean.City"/>
            </set>
        </class>
    </hibernate-mapping>
     
     
     注意 :po  --构造器 扩展
     
      关联操作:
     
       a.务必 保证  对象模型 完成。
     
       b.保证 关联对象  处于 持久态。
     
     
    public class Text1{
         public static void main(String[] args){
             //创建SessionFactory
              SessionFavtory sessionFactory = null;
             //创建Session
              Session session  = null;
              //事务
              Transaction tx = null;
              try{
                   sessionFactory = new Configuration.configure().buildSessionFactory();
                   session = sessionFactory.getCurrentSession();
                   //开启事务
                   tx = sesison.beginTransaction();
                   //多对一测试
                   /*
                   City city = (City)sesison.get(City.class,"1301") ;
                   Hibernate,initialize(city.getProv());   //代理对象         
                   system.out.println("----");
                   system.out.println(city.getProv().getProv_name()); 
                   */
                    //一对多测试
                   Prov prov= (Prov)sesison.get(Prov.class,"13") ;
                   system.out.println("----");
                   for(Cty c:p.getCitys()){
                   system.out.println(c.get City_name);
                        
                    //提交
                   tx.commit();
              }catch(Exception e){
                   e.printStackTrace();
                   //事务回滚
                   tx.rollback();
              }
         }
    }
     
    2.性能
     
      inverse (true) 配置在一方的set中, 可以让 hibernate 放弃 一方到多方的从对象模型到关系模型的维护
     
       cascade="" 多方  级联
         级联的什么操作
         级联时是否 影响对象模型
     
     
  • 相关阅读:
    Mysql探索之索引详解,又能和面试官互扯了~
    POJ 1163
    POJ 1157
    POJ 1143
    POJ 1164
    HDU 2553
    POJ 1321
    POJ 1125
    POJ 2488
    POJ 3083
  • 原文地址:https://www.cnblogs.com/nin-w/p/5907445.html
Copyright © 2011-2022 走看看