关联映射

关联映射
 
含义:将对象模型之间的关系 映射至数据库关系模型 。
 
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="" 多方  级联
     级联的什么操作
     级联时是否 影响对象模型
 
 
原文地址:https://www.cnblogs.com/nin-w/p/5907445.html