多对一

 

多对一是最常见,也是最理解的一种关联。比如多个员工属于同一个部门,多个产品属于同一个类别,单项的多对一指的是多方可以访问一方,而一方不知道多方的存在。

 

 

测试类

多对一

package com.hbsi.test;

 

import org.hibernate.Session;

import org.hibernate.Transaction;

 

import com.hbsi.domain.Department;

import com.hbsi.domain.Employee;

import com.hbsi.hibernate.utils.HibernateUtil;

 

public class Many2One {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       add();

    }

    //

    static Department add(){

       Session s=null;

       Transaction tx=null;

       try{

           s=HibernateUtil.getSession();

           tx=s.beginTransaction();

           //增加

           Department dep=new Department();

           dep.setName("depart one");

          

           Employee el=new Employee();

           el.setName("Tom");

           el.setDepart(dep);//对象模型:两个对象建立关联关系

           s.save(dep);

           s.save(el);

          

          

          

           tx.commit();

           return dep;

          

       }finally{

           if(s!=null)

              s.close();

       }

      

      

    }

 

}

一对多

例如部门Department和员工Employee的关系,

       分析:一个部门可以有多个员工但是一个员工只能对应一个部门;

1:倒如相应的文件驱动;

       2:建立相应的Department类和Employee类

3; 建立相应的映射文件  Employee是1 的一方所以他的映射文件就是普通方式

的建立;Department是多的一方所以又给他添加了一个属性Employee对象的set集合名字是个empt  在写属性的该映射文件时:

<set name=”empt”>

<key  name=”empt_id”/>

<one-to-many class=”Employee”>

</set>

4:建立相应的工具包并建立相应的HibernateUtil类实现获取session对象

static{

    //’获取配置对象

       Configuration cfg=new Configuration();

       cfg.configure();//初始化

       //获取session工厂

       sessionFactory=cfg.buildSessionFactory();

    }

    public static SessionFactory getSessionFactory(){

       return sessionFactory;

    }

    public static Session getSession(){

       //启动session

       return sessionFactory.openSession();

 

测试类

 

package com.hbsi.test;

 

import org.hibernate.Hibernate;

import org.hibernate.Session;

import org.hibernate.Transaction;

 

import com.hbsi.domain.Department;

import com.hbsi.domain.Employee;

import com.hbsi.hibernate.utils.HibernateUtil;

 

public class One2Many {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       add();

       queryDepartment(1);

 

    }

 

    static Department add() {

       Session s = null;

       Transaction tx = null;

       try {

           s = HibernateUtil.getSession();

           tx = s.beginTransaction();

           // 增加

           Department dep = new Department();

           dep.setName("depart one");

 

           Employee el = new Employee();

           el.setName("Tom");

           el.setDepart(dep);// 对象模型:两个对象建立关联关系

 

           Employee e2 = new Employee();

           e2.setName("Jerry");

           e2.setDepart(dep);

 

           s.save(dep);

           s.save(el);

           s.save(e2);

 

           tx.commit();

           return dep;

 

       } finally {

           if (s != null)

              s.close();

       }

 

    }

 

    static Department queryDepartment(int depId) {

       Session s = null;

       Transaction tx = null;

       try {

           s = HibernateUtil.getSession();

           tx = s.beginTransaction();

           // 查询

           Department d = (Department) s.get(Department.class, depId);

           System.out.println(d.getName() + " 有  " + d.getEmps().size()

                  + "个员工");

           tx.commit();

           return d;

 

       } finally {

           if (s != null)

              s.close();

        }

 

    }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值