关联映射
- 多对一(Employee - Department)
- 一对多(Department - Employee)
- 一对一(person - idcard)
- 多对多(teacher - student)
- 组合映射(User - Name)
- 集合映射(set,list,map,sag)
- inverse和cascade(Employ - department)
多对一映射(Employee = Department)
映射文件<many-to-one name="depart" column="depart_id"/>
可以看出,我们可以只关心对象模型,关系模型由hibernte来维护。
对应一下Department类
package domain; public class Employee { private int id; private String name; private Department depart; 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 getDepart() { return depart; } public void setDepart(Department depart) { this.depart = depart; } }
可以看出Employee类持有department类的引用,在配置文件中只要把属性放进名字即可。
看一下自动生生成的Employee表的建表语句,果然生成了外键。
PS:只是标签从property编程了many-to-one其他的貌似都没变
测试一下:
package test; import org.hibernate.Session; import org.hibernate.Transaction; import Util.HibernateUtils; import domain.Department; import domain.Employee; import domain.User; public final class TestMany2One { public static void main(String[] args) { add(); query(1); } private static void add() { Session session = null; Transaction transaction = null; try{ session = HibernateUtils.getSession(); transaction = session.beginTransaction(); Department depart = new Department(); depart.setName("depart01"); Employee employee = new Employee(); employee.setName("employee01"); employee.setDepart(depart);//对象模型:建立两个对象的关联 session.save(depart); session.save(employee); transaction.commit(); }catch(Exception e){ e.printStackTrace(); transaction.rollback(); }finally{ if(session != null) session.close(); } } private static Employee query(int id) { Session session = null; try{ session = HibernateUtils.getSession(); Employee employee = (Employee) session.get(Employee.class,id); System.out.println(employee.getDepart().getName()); return employee; }finally{ if(session != null) session.close(); } } }
一对多(Department - Employee)
在Department类中增加属性Set<Employee> emps 表示一对多
在Deppartment的配置文件中增加
<set name="emps">
<key column="depart_id"/>
<one-to-many calss="Employee"/>
</set>
一对一(person - idcard)
基于主键的one-to-one(person的映射文件)
<id name="id">
<generator class="foreign">
<param name="property">idcard<param>
</generator>
<id>
<one-to-one name="idCard" constrained="true">
多对多(teacher - student)
在操作和性能方面都不太理想,所以多对多映射使用较少,实际使用中最好转换成一对多的模型,Hibernate会为我们创建中间关联表,转换成两个一对多。
<set name="teacher" table="teacher_student">
<key column="teacher_id">
<many-to-many class="student" column="student">
</>
组合映射(User - Name)
感觉就是这个对象不是很大,不用使用一张表来表示他比如姓和名直接放进User表就好
标签如下:
<compoment name="name">
<property name="firstName" column="first_name">
<property name="lastName" column="last_name">
</compoment>
最后零散笔记吧
级联操作:<set name="emps" cascade="save-update">
一对多,多对一是相互的,一般一的这一方面放弃对关系的维护:<set name="emps" inverse="true">
以上只能是set,list不能指定inverse,所以一对多最好不用List,而用set
相关推荐
【标题】"J2EE系列讲座之Hibernate.lesson1.rar" 提供的是关于J2EE开发中的一个重要组件——Hibernate的学习资源,这是一款强大的对象关系映射(ORM)框架,旨在简化Java应用程序与数据库之间的交互。在J2EE环境中,...
Struts2Test很可能是一个用于演示Struts2特性的测试项目,可能包含Action类、视图页面以及与之关联的业务逻辑和数据库操作。通过阅读和运行这些源代码,开发者可以深入理解每个框架的工作原理,以及它们如何协同工作...
- Hibernate的一对一、一对多、多对多的关联映射。 - CSS的选择器语法,盒模型理解,布局技巧如Flexbox和Grid。 - CSS3的新特性,如伪类、动画、媒体查询等。 - 如何在JSF应用中整合Hibernate,实现数据的增删改查。...
在J2EE开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本讲主要聚焦于Hibernate的检索方式,通过深入探讨和实践,我们将了解如何有效地从数据库中获取数据。 一、Hibernate检索...
本文档主要聚焦于Hibernate框架下继承关系的映射,通过三种不同的策略——隐式继承映射、单表映射和关联表映射,来实现类的继承结构在数据库中的映射。 ### 隐式继承映射 #### 定义与配置 隐式继承映射也称为“表...
此外,它可能还会涵盖如何使用Hibernate的API进行数据操作,以及如何处理关联映射、事务管理和缓存策略等高级话题。 在实际开发中,理解J2EE与Hibernate的协同工作原理至关重要。例如,J2EE中的Servlet和JSP负责...
总结起来,在J2EE项目开发中,使用Hibernate映射视图是一种解决复杂查询和跨表统计的有效策略。当原生SQL不适用时,创建视图并进行相应的ORM配置可以保持代码的整洁性和可维护性。需要注意的是,视图的映射可能会...
### Hibernate的延迟检索在轻量级J2EE框架中的应用 #### 1. 引言 随着互联网技术的发展,Web应用程序的需求日益增加,对于高效、快速的开发模式也提出了更高的要求。轻量级J2EE框架(Struts+Spring+Hibernate)因...
7. **一对多、一对一、多对多关联映射** Hibernate支持多种关系映射,包括实体之间的关联,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)关系的处理。 8. **缓存...
27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate多对多案例笔记 J2EE框架_笔记_c: 44登陆案例(Struts+DAO+Hibernate)笔记 45-Struts+Hibernate完成分页笔记 46-...
在本篇关于“在 Hibernate 中实现复杂的数据映射”的文章中,我们将深入探讨如何使用 Hibernate 框架处理不同类型的关联关系,包括一对一、一对多和多对多。这些关系在数据库设计中十分常见,而 Hibernate 提供了...
在J2EE项目开发中,Hibernate是一个非常重要的持久层框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑,而非繁琐的SQL语句编写。本实训主要围绕Hibernate框架技术展开,旨在帮助你深入...
Hibernate通过配置文件和注解,将数据库表与Java类关联,实现了对象的持久化。开发者可以通过调用对象的方法来执行CRUD(创建、读取、更新、删除)操作,而无需编写大量的SQL语句。 【Struts与Hibernate结合】 在...
在J2EE应用程序开发中,Hibernate是一个非常重要的ORM(对象关系映射)框架,它使得Java开发者能够方便地处理数据库操作,如增删改查(CRUD),而无需编写大量的SQL语句。本教程将详细介绍如何使用Hibernate实现...