持久化对象,即就是在数据库中存有其相对应数据的对象,并且在内存中也有这个对象,这个对象在Session的管理范围内,也就是调用过save()方法同步到数据库的对象。
瞬时对象,即在内存中刚刚创建的对象,还没有同步到数据库,或者是数据库中信息被删除了的对象也是临时状态。
游离对象,也就是在数据库中有和该对象向对应的纪录,并且在内存中的也存在该对象,但是不在Session的管理范围之内,也就是在Session关闭之后,就成了游离对象,就不会在将其改变同步到数据库中,如果要使还想令其成为持久化对象就要在把它纳入Session管理中,也就是掉用Session中的update()方法就可以了。
及物的持久化,也就是说针对这个对象的属性进行持久化操作,也就是通过级联进行设置。
一对多
建表策略,多方引用一方的主键当作外键
以经典的班级和学生为例,Clazz类(由于Class是类类的名字不能使用)和Student类
学生类Student
package alan.hbn.o2m;
import java.io.Serializable;
public class Student implements Serializable{
private int studentId;
private String studentName;
private Clazz clazz;
public void setStudentId(int studentId){
this.studentId = studentId;
}
public int getStudentId(){
return this.studentId;
}
public void setStudentName(String studentName){
this.studentName = studentName;
}
public String getStudentName(){
return this.studentName;
}
public Class getClazz(){
return this.clazz;
}
public void setClazz(Clazz clazz){
this.clazz=clazz;
}
}
班级类Clazz
package alan.hbn.rel.o2m;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
public class Clazz implements Serializable{
private int clazzId;
private String clazzname;
private Set<Student> students = new HashSet<Student>();
public int getClazzId(){
return clazzId;
}
public void setClazzId(int clazzId){
this.clazzId = clazzId;
}
public String getClazzname(){
return clazzname;
}
public void setClazzname(String clazzname){
this.clazzname =clazzname;
}
public Set getStudents(){
return students;
}
public void setStudents(Set<Student> Students){
this.students = students;
}
public void addStudent(Student student){
students.add(student);
if(student!= null){
student.setClazz(this);
}
}
}
一对多的映射配置文件
Student类的映射配置文件 Student.hbm.xml
<hibernate-mapping package="alan.hbn.o2m">
<class name="Student" table="student">
<id name="studentId" column="studentId">
<generator class="native"/>
</id>
<property name="studentName" column="studentName"/>
<many-to-one name="clazz" class="Clazz" column="classid"
not-null="true" fetch="join"/>
<!--
many-to-one标签name属性是表示本类中关联类的对象的名字,class属性表示其类型,column属性是表示引用外键的字段名
-->
</class>
</hibernate-mapping>
Clazz类的映射配置文件Clazz.hbm.xml
<hibernate-mapping package="alan.hbn.rel.o2m" >
<class name="Clazz" table="class_o2m">
<id name="clazzId" column="classid">
<generator class="native"/>
</id>
<property name="clazzname" column="classname"/>
<set name="students" inverse="true" cascade="save-update">
<key column="classid"/>
<one-to-many class="Student"/>
</set>
<!--
set标签对应的是本类中的集合属性,set标签的自标签key是标明本类对应的表中被引用为外键的字段,one-to-many标签是标明关联的类型,也就是集合属性中存放的类型
-->
</class>
</hibernate-mapping>
分享到:
相关推荐
**5.5 Hibernate知识辅导(3--1)** - **会话管理**: Session和SessionFactory的使用。 - **事务处理**: 使用Transaction控制事务。 - **缓存策略**: 一级缓存和二级缓存的使用。 以上内容仅为部分概述,完整的...
1. **Struts框架**: Struts是Apache软件基金会的一个开源项目,主要用于MVC(Model-View-Controller)架构的设计。在博客系统中,Struts负责处理用户请求,将HTTP请求映射到相应的Action类,执行业务逻辑,并通过...
1. **Java基础知识**: - 数据类型:了解基本数据类型(整型、浮点型、字符型、布尔型)以及它们的内存占用和范围。 - 变量与常量:理解变量的声明、初始化和作用域。 - 类与对象:掌握类的定义、对象的创建及...
知识点1: Spring Boot 框架 * Spring Boot 是一个基于 Spring 框架的快速应用程序开发框架,能够快速构建独立的、生产级别的基于 Spring 的应用程序。 * Spring Boot 제공了许多默认配置和 starter 依赖项,能够...
3. **JavaWeb阶段** - **JavaScript DOM编程视频教程**:JavaScript是前端开发的核心语言之一,DOM编程是其中的重要组成部分。 - **jQuery视频教程**:jQuery是一种流行的JavaScript库,简化了HTML文档遍历、事件...
3. **部署文档**:"1-部署文档"将提供详细的步骤来指导用户如何在本地或者服务器上运行这个项目。通常会包含环境配置(如JDK、Tomcat服务器等)、数据库连接配置、应用打包和启动方法等内容。 4. **源码**:"4-源码...
“3-资料”可能包含相关的学习资料,例如Java编程基础、Spring Boot教程、数据库管理知识等,帮助用户深入理解系统原理,提升开发技能。 六、辅导视频 “5-视频”中的辅导视频是系统的重要补充,通过实例演示,...
根据给定的文件信息,我们可以提炼出一系列与Java程序设计相关的知识点,这48讲加上额外的2讲辅导课程,涵盖了Java编程的基础到高级技术,是深入理解和掌握Java语言的宝贵资源。以下是对这些知识点的详细说明: ###...
5. **框架知识**:如果你有使用MVC框架(如Spring MVC)、持久层框架(如Hibernate)或前端框架(如Angular、React)的经验,应明确指出并简述应用情况。 6. **数据库技能**:展示你的SQL知识,包括查询优化、事务...
8. **辅导视频**:01-视频可能是一系列的教学视频,帮助学习者理解系统的实现过程,包括编程技巧、问题调试、功能测试等内容,有助于深化理论知识和实践能力。 9. **版本控制**:项目可能使用Git进行版本控制,确保...
最后,"资料"(3-资料)可能是额外的学习资源,如Java编程指南、数据库管理教程、软件工程理论等,这些都能帮助学习者更全面地掌握相关知识。 综上所述,这个基于Java的人力资源管理系统项目不仅提供了实践经验,也...
- 数据库:MySQL或Oracle存储用户信息、作业、成绩等数据,使用JDBC进行数据库操作,可能结合Hibernate或MyBatis简化ORM(对象关系映射)。 - 前端:HTML、CSS和JavaScript,可能使用Bootstrap或Vue.js等框架提升...
这个项目的重点在于理解和应用Java编程语言来构建一个实用的业务系统,同时也涉及到数据库管理和系统部署的相关知识。 1. **Java编程基础**:Java是一种面向对象的编程语言,它的特性包括平台独立性、丰富的类库和...
1. **视频教程**:通过视频,可以清晰地看到每个步骤的演示,帮助理解理论知识在实际操作中的应用。 2. **学习资料**:可能包括相关的技术文档、教程文章,进一步深入学习Java Web开发和健身房管理系统的具体实现...
1. **Java编程语言**:本项目的核心开发语言是Java,它是一种跨平台的面向对象编程语言。Java的特性如封装、继承和多态在系统设计中得以体现,提高了代码的可维护性和复用性。同时,Java的异常处理机制、IO流、集合...
3. **Hibernate框架**:Hibernate是一个对象关系映射(ORM)工具,简化了数据库操作。在本项目中,Hibernate用于将Java对象与数据库表进行映射,通过对象的方式来操作数据库,减少了SQL的编写,提高了开发效率。 4....