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

创建部门表department


创建雇员表employee


新建包

新建持久化类

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();
	}
}





先插入部门表

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();
	}
}

通过级联增加增加雇员

修改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();
	}
}





查询:

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();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值