`
jknmae
  • 浏览: 11269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate 映射2

阅读更多
1.2 一对多 即两个表通过外键进行关联,一个部门,多个员工;一个学校,多个学生;这里的两个表通过外键关联

  public class Department {
	private int deptid;
	private String dname;
	private String location;
	private Set<Employee> employees=new HashSet<Employee>(); //这里是一个集合 一个部门有多个 员工 即"多"
  }

  public class Employee {
	private int empid;
	private String ename;
	private Department department;  //而对每个员工来说只有一个部门 即 "一"
  }

我们先按我们的思路想下配置文件  有一个Department对应{Employee..}也就是many 个Employee 对应一个
Department 并且有many个外键
<hibernate-mapping 
	package="com.bjsxt.po">
	<class name="Employee" table="t_employee" >
		<id name="empid">
			<generator class="native"></generator>
		</id>
		<property name="ename"></property>
		<many-to-one name="department" class="Department" cascade="all" >
			<column name="dept_id"></column>  <!-- 这个就是我们前面说到的多个外键--!>
		</many-to-one>
	</class>
</hibernate-mapping>
而Department类中不是有一个set 的集合吗 所以用到set  

<hibernate-mapping package="com.bjsxt.po">
	<class name="Department" table="t_department" >
		<id name="deptid">
			<generator class="native"></generator>
		</id>
		<property name="dname"></property>
		<property name="location"></property>
		<set name="employees" cascade="save-update" inverse="false" >
			<key>
				<column name="dept_id"></column> <!-- 对应employee中的一个列 --!>			
			</key>
			<one-to-many class="Employee" />
		</set>
	</class>
</hibernate-mapping>
 其中cascade  属性和inverse 属性比较重要
 cascade 属性是级联的操作,比如我们增加一个员工时同时对该员工的部门设置了值.如果数据库中没有记录.则
 强大的Hibernate 会为我们创建表,并添加记录并建立关系。当然这些只是我们上面配置的文件的作用.
  cascase = all  进行任何操作时都级联
            save-update 保存和更新时
            delete 删除时级联
           all-delete-orpnan 当被关联对象失去宿主时,将其删除 也就是如果我们把部门删除了,那么员工自然就没有家可回了,会被一并删除  特别注意如果此属性不设置,则会报错
inverse 属性 =false =true  表示由哪一方维护外键的值 false是双方都可以维护,true是有多方维护 .true效率高
最后,终于要说多对多的情况了 首先我们应该知道,多对多就会产生中间表,而中间表肯定有两个表的字段
1.n
   public class Student2 {
	private int id;
	private String name;
	private Set courses=new HashSet();  //这里是一个set的集合了, 学生可以有多门课程
   }

   public class Course {
	private Long id;
	private String name;
	private Set students =new HashSet(); //课程也可以被多个同学选修
   }

   这里我们假设没有hibernate 帮我们的情况下,我们应该自己建立一个中间表 student_course
表中自然有student_id,course_id 如果我们这样想的话。那么配置文件一看就明白

 <hibernate-mapping package="com.bjsxt.po">
	<class name="Student2" table="t_student2" lazy="true">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name"/>
                   <!-- set 出现了,表为stu_course 即为中间表--!>
		<set name="courses" table="stu_course" cascade="save-update">
			<key column="stuId" />		 <!-- key 对应当前表的外键  --!>
			<many-to-many class="Course" column="courseId" />
		</set>
	</class>
 </hibernate-mapping>
此时我们应该猜想Course.hbm.xml应该和这个一样,只是一些小小的差别
<hibernate-mapping package="com.bjsxt.po">
	<class name="Course" table="t_course" lazy="true">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name"/>
		<set name="students" table="stu_course" cascade="save-update">
			<key column="courseId" />		//t_sourse的外键
			<many-to-many class="Student2" column="stuId" />
		</set>
	</class>
</hibernate-mapping>

基础上一些大的我们已经配置完了。当然这些都可以在网上查到。但最少我们应该知道怎么配。


分享到:
评论

相关推荐

    自动生成hibernate映射文件和实体类

    "自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Hibernate 映射文件自动生成

    【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...

    myeclipse自动生成hibernate映射文件

    Hibernate映射文件是XML格式的文件,它定义了数据库表与Java实体类之间的对应关系,包括字段映射、主键策略、关联关系等。映射文件让开发者无需编写SQL语句,就能通过Java对象进行数据库操作。 2. **MyEclipse ...

    Myeclipse生成Hibernate映射文件

    而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    常用 Hibernate 映射配置说明.doc

    ### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    Hibernate映射树形结构

    标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    hibernate映射文件生成数据库

    2. 编写映射文件:对于每个实体类,编写相应的Hibernate映射文件。映射文件中,你需要指定表名、列名、数据类型以及主键生成策略等。例如: ```xml &lt;hibernate-mapping package="com.example"&gt; &lt;/...

    Hibernate映射实例

    确保数据库与Hibernate映射文件一致,能正确地反映实体之间的关系。导入DBO到SQL Server数据库后,就可以通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作了。 在开发过程中,理解并熟练运用这些...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    Hibernate映射集合属性List

    本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...

Global site tag (gtag.js) - Google Analytics