【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找

创建部门表department

【hibernate实例】赵雅智_单项一对多增加查找


创建雇员表employee

【hibernate实例】赵雅智_单项一对多增加查找


新建包
【hibernate实例】赵雅智_单项一对多增加查找
新建持久化类

Department.java

package www.hbsi.net.one2many;


import java.util.Set;


import www.hbsi.net.many2one.Employee;


public class Department {


	private int id;
	private String name;
	private Set<Employee> emps;


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public Set<Employee> getEmps() {
		return emps;
	}


	public void setEmps(Set<Employee> emps) {
		this.emps = emps;
	}


}

Employee.java

package www.hbsi.net.one2many;


public class Employee {
	private int id;
	private String username;


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getUsername() {
		return username;
	}


	public void setUsername(String username) {
		this.username = username;
	}


}


新建映射表

Department.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="www.hbsi.net.one2many">
 <class name="Department" table="department">
   <id name="id" column="id">
    <generator class="native"/>
   </id>
   <property name="name" column="name" type="string"/>
  
   <set name="emps" table="employee">
    <key column="dept_id"/>
    <one-to-many class="Employee"/>
   </set>
 
 </class>
</hibernate-mapping>


Employee.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping package="www.hbsi.net.one2many">
 <class name="Employee" table="employee">
   <id name="id" column="id">
    <generator class="native"/>
   </id>
   <property name="username" column="username" type="string"/>
 </class>
</hibernate-mapping>


修改Hibernate.cfg.xml文件的mapping
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

	<session-factory>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/hibernate
		</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123456</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		
		<mapping resource="www/hbsi/net/one2many/Department.hbm.xml" />
		<mapping resource="www/hbsi/net/one2many/Employee.hbm.xml" />

	</session-factory>

</hibernate-configuration>
增加

One2mant.java

package www.hbsi.net.one2many;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.junit.Test;

import www.hbsi.net.util.HibernateSessionFactory;

public class One2many {

	@Test
	public void add() {
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		Department dept = new Department();
		dept.setName("数媒系");

		Employee emp1 = new Employee();
		emp1.setUsername("雇员1");

		Employee emp2 = new Employee();
		emp2.setUsername("雇员2");

		Set<Employee> emps = new HashSet<Employee>();
		emps.add(emp1);
		emps.add(emp2);

		//把部员和部门建立了联系,把雇员设上了id,外键,产生update语句
		dept.setEmps(emps);

		session.save(emp1);
		session.save(emp2);
		session.save(dept);

		session.getTransaction().commit();
		HibernateSessionFactory.closeSession();
	}
}

【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找


先插入部门表

package www.hbsi.net.one2many;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.junit.Test;

import www.hbsi.net.util.HibernateSessionFactory;

public class One2many {

	@Test
	public void add() {
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		Department dept = new Department();
		dept.setName("数媒系2");

		Employee emp1 = new Employee();
		emp1.setUsername("雇员3");

		Employee emp2 = new Employee();
		emp2.setUsername("雇员4");

		Set<Employee> emps = new HashSet<Employee>();
		emps.add(emp1);
		emps.add(emp2);

		//把部员和部门建立了联系,把雇员设上了id,外键,产生update语句
		dept.setEmps(emps);

		session.save(dept);
		session.save(emp1);
		session.save(emp2);
		

		session.getTransaction().commit();
		HibernateSessionFactory.closeSession();
	}
}
【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找

通过级联增加增加雇员

修改Department.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="www.hbsi.net.one2many">
   <class name="Department" table="department">
      <id name="id" column="id">
        <generator class="native"/>
      </id>
      <property name="name" column="name" type="string"/>
     
      <set name="emps" table="employee" cascade="save-update">
         <key column="dept_id"/>
         <one-to-many class="Employee"/>
      </set>
   
   </class>
</hibernate-mapping>

One2many.java

package www.hbsi.net.one2many;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.junit.Test;

import www.hbsi.net.util.HibernateSessionFactory;

public class One2many {

	@Test
	public void add() {
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		Department dept = new Department();
		dept.setName("数媒系4");

		Employee emp1 = new Employee();
		emp1.setUsername("雇员7");

		Employee emp2 = new Employee();
		emp2.setUsername("雇员8");

		Set<Employee> emps = new HashSet<Employee>();
		emps.add(emp1);
		emps.add(emp2);

		//把部员和部门建立了联系,把雇员设上了id,外键,产生update语句
		dept.setEmps(emps);
		session.save(dept);
		

		session.getTransaction().commit();
		HibernateSessionFactory.closeSession();
	}
}

【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找

【hibernate实例】赵雅智_单项一对多增加查找


查询:

One2many.java

package www.hbsi.net.one2many;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.junit.Test;

import www.hbsi.net.util.HibernateSessionFactory;

public class One2many {

	@Test
	public void add() {
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		Department dept = new Department();
		dept.setName("数媒系4");

		Employee emp1 = new Employee();
		emp1.setUsername("雇员7");

		Employee emp2 = new Employee();
		emp2.setUsername("雇员8");

		Set<Employee> emps = new HashSet<Employee>();
		emps.add(emp1);
		emps.add(emp2);

		//把部员和部门建立了联系,把雇员设上了id,外键,产生update语句
		dept.setEmps(emps);
		session.save(dept);
		

		session.getTransaction().commit();
		HibernateSessionFactory.closeSession();
	}
	@Test
	public void find(){ //通过部门id,查找该部门的所有员工
		
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		
		Department dept = (Department) session.get(Department.class,7);
		
		Set<Employee> emps = dept.getEmps();
		System.out.println(emps.size());
		
		session.getTransaction().commit();
		HibernateSessionFactory.closeSession();
	}
}

【hibernate实例】赵雅智_单项一对多增加查找


【hibernate实例】赵雅智_单项一对多增加查找