`

多对一(员工and部门)

阅读更多

 

ER:

 

employee
名称 主键 类型 描述
id pk int 员工编号
name   varcher(45) 员工名称
department_id fk int 部门编号

 

department
名称 主键 类型 描述
id pk int 部门编号
name   varchar(45) 部门名称

 

package com.zchen.user.domain;

public class Department {

	private int id;
	private String name;
	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;
	}
	
}

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  
<hibernate-mapping package="com.zchen.user.domain">
	<class name="Department" table="`department`">
	  	<id name="id" column="`id`">
		  <generator class="native">
		  </generator>
	  	</id>
	  	<property name="name" unique="true"/>
	</class>
	
</hibernate-mapping>

 

package com.zchen.user.domain;

public class Employee {

	private int id;
	private String name;
	private Department department;
	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 Department getDepartment() {
		return department;
	}
	public void setDepartment(Department department) {
		this.department = department;
	}
	
}

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  
<hibernate-mapping package="com.zchen.user.domain">
	<class name="Employee" table="`employee`">
	  	<id name="id" column="`id`">
		  <generator class="native">
		  </generator>
	  	</id>
	  	<property name="name"/>
	  	<many-to-one name="department" column="depart_id"></many-to-one>
	</class>
	
</hibernate-mapping>

 

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///user</property>
		<property name="connection.username">root</property>
		<property name="connection.password">mysqladmin</property>
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">create</property>
		<mapping resource="com/zchen/user/domain/Department.hbm.xml"/>
		<mapping resource="com/zchen/user/domain/Employee.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 测试:

package test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.zchen.user.dao.HibernateUtil;
import com.zchen.user.domain.Department;
import com.zchen.user.domain.Employee;
public class Mant2One {
	public static void main(String[] args) {
		add();
		query(1);
	}
	public static Department add(){
		Department depart = new Department();
		Employee emp = new Employee();
		Session session = null;
		Transaction tx = null;
		try {
			depart.setName("事业部");
			emp.setDepartment(depart);//对象模型 建立两个对象的关联
			emp.setName("里斯");
			session = HibernateUtil.getSession();
			tx = session.beginTransaction();
			//session.save(depart);
			//session.save(emp);
			session.save(emp);
			emp.setName("wangwu");
			session.save(depart);
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
		return depart;
	}
	
	static Employee query(int empId){
		Session session = null;
		Transaction tx = null;
		Employee emp = null;
		try {
			session = HibernateUtil.getSession();
			tx = session.beginTransaction();
			emp = (Employee)session.get(Employee.class, empId);
			System.out.println("depart name"+emp.getDepartment().getName());
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
		return emp;
	}
}

 

分享到:
评论

相关推荐

    EJB3一对多和多对一关系映射实例

    在上面的部门与员工的例子中,如果我们将关注点放在员工上,那么可以说每个员工对应一个部门,这就是多对一关系。实际上,我们在`Employee`类中已经实现了这个关系,因为每个员工可以属于一个部门,而一个部门可以有...

    hibernate多对一关联demo

    在数据库设计中,多对一关联意味着一个实体(如部门)可以与多个其他实体(如员工)相关联,而每个其他实体只能对应到这个单一的实体。例如,在公司数据库中,一个部门可能有多个员工,但每个员工只属于一个部门。 ...

    Oracle 经典查询练手

    为了找出至少有一个员工的所有部门,我们需要连接`emp`表和`dept`表,并且确保只选择那些在`emp`表中有记录的部门。可以使用内连接(INNER JOIN)来实现这一目标。 **SQL语句:** ```sql SELECT d.DEPTNO, d.DNAME ...

    hibernate多对一单向关联关系实现源码

    在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...

    Hibernate的一对一,一对多,多对多映射

    这里,Department和Employee类分别代表部门和员工,一个部门可以有多名员工,而一名员工只能属于一个部门。`@OneToMany`和`@ManyToOne`注解定义了这种关系。 ### 3. 多对多映射 多对多关系表示两个实体之间存在多...

    hibernate实例(一对多,多对一)

    在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...

    jQuery表单OA员工部门分组代码.zip

    这里的jQuery表单可能包含了多个输入字段,用于员工信息的填写,并可能集成了部门下拉菜单,方便用户选择所属部门。 3. **CSS**:层叠样式表(CSS)用于定义网页的布局和样式。在员工部门分组的表单中,CSS可能用于...

    JPA_2_一对多双向关联关系

    在`Employee`实体中,`@ManyToOne`注解表示多对一的关系,`@JoinColumn`注解指定了外键所在的列名。 为了使双向关联正常工作,还需要在每个实体的setter方法中添加一些额外的逻辑,以确保两边的关系同步: ```java...

    一列保存多个ID(将多个用逗号隔开的ID转换成用逗号隔开的名称)

    在数据库设计中,有时会遇到一种情况,即在主表中的一列用来存储多个关联ID,这些ID之间用逗号隔开,这种做法虽然...在设计数据库时,通常建议遵循第一范式,将多对多关系通过中间表来表示,以提高数据管理和查询效率。

    一对多自关联

    例如,在一个公司员工管理系统中,一个部门可以有多名员工,但一个员工只能属于一个部门,这就构成了一对多自关联。 在这个场景中,"源码"标签可能意味着我们将讨论如何在编程中实现这种关系,而"工具"标签则可能...

    一对多单向和双向映射

    在Java对象关系映射(ORM)框架中,Hibernate是一个广泛使用的工具,它允许开发者将数据库中的数据模型化为Java对象。...对于更复杂的关系,如多对多映射,原理类似,但配置会更复杂,需要额外处理中间表。

    员工在线考试系统 v0.82.zip

    搜索员工 关键字 员工姓名 员工工号 部门名 精确查找 模糊查找 员工列表| 员工ID 员工工号 员工姓名 员工用户名 员工性别 部门名 用户身份 岗位名 添加员工 部门列表| 部门ID 部门代码 部门名 部门人数 部门答题...

    大连理工数据库关系代数练习

    这里,第一个`SELECT`语句返回10号部门员工的姓名,第二个`SELECT`语句返回20号部门员工的姓名。`UNION`操作会将这两个结果集合并为一个结果集,并自动去除重复的行。 #### 4. 查询10号部门及20号部门的员工(两种...

    Employee-Tracker:这个应用程序是一个内容管理系统,在这个应用程序中可以创建员工、部门和角色。 该应用程序使用 mysql 来存储所有数据。 该应用程序要求提供必要的数据来创建所有员工、部门和员工。 它还可以根据它具有的预构建操作修改现有数据

    这个应用程序是一个内容管理系统,在这个应用程序中可以创建员工、部门和角色。 该应用程序使用 mysql 来存储所有数据。 该应用程序要求提供必要的数据来创建所有员工、部门和员工。 它还可以根据它具有的预构建操作...

    hibernate 一对多实例

    3. 避免无限循环:在序列化或JSON转换时,确保避免无限递归(一个部门包含多个员工,每个员工又包含部门...),可以使用`@JsonManagedReference`和`@JsonBackReference`进行控制。 4. 性能优化:在大规模数据操作时...

    java之用Ajax技术实现三级联动&&&部门员工网页表格小案例

    在本Java项目中,我们利用Ajax技术来实现一个三级联动的部门员工管理界面,并通过网页表格展示数据。这个案例旨在帮助我们深入理解Ajax的工作原理及其在实际开发中的应用。Ajax,全称为Asynchronous JavaScript and ...

    PMC部门员工培训教材.doc

    PMC部门,全称为Production and Material Control,是企业管理中的核心...PMC的工作效能直接影响企业的生产效率和客户满意度,因此,对PMC部门员工进行深入培训和理解其职责至关重要,以便更好地支持企业的生产目标。

    员工出勤情况统计表(表格模板、DOC格式).doc

    2. 部门名称:记录员工所属的部门名称。 3. 填表日期:记录填表的日期。 4. 新进人数:记录新加入的员工人数。 5. 应到人数:记录应该出勤的员工人数。 6. 未到人数:记录未出勤的员工人数。 7. 辞职人数:记录辞职...

    Hibernate一对多映射

    // 使用@ManyToOne注解声明多对一关系 @ManyToOne @JoinColumn(name = "user_id") private User user; // getters and setters } ``` **3. 关联的属性和操作** 在`User`类中,`orders`字段被标记为`@...

    ibatis实战之一对多关联(源代码)

    在关系型数据库中,一对多关联是非常常见的一种数据关系,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。在iBatis中,我们可以通过配置XML映射文件来实现这种关联。 1. **一对多关联映射原理** 一对...

Global site tag (gtag.js) - Google Analytics