对象与映射关系总结2
一:一对一的关系
步骤:1、建立Hibernate-cfg.xml文件
2、建立一对一对象Customer和CardID
在建立对象Customer 和CardID时
A.Customer类里要把CardID对象组合进来,并且不能初始化!
否则会报java.lang.StackOverflowError的异常
(为什么要报此错,并不理解!)
B.CardID类里面要把Customer组合进来,在此类里,无论初不初始化,都不会报异常!
3、在数据库中建立对应的表
4、建立Customer.hbm.xml对象和关系映射文件
A、在此映射文件里generator主键生成器要设为assigned(主键由外部程序生成,无需hibernate参与)
B、在<one-to-one> 里面cascade(级联)要设置成all
5、建立CardID.hbm.xml
A、在此映射文件里generator主键生成器要设为foreign(使用外部表的字段作为主键。)
并且要在此标签里加上<param name="property">customer(Customer类指定的引用的属性)</param>标签
6、建立OneToOneService(业务操作类)
二:多对一的关系
步骤:1、建立Hibernate-cfg.xml文件
2、建立多对一对象Customer和Order
3、建立数据库中的表
在 Order类里面把Customer类组合进来,Customer类可以初始化,也可以不初始化
(具体原因就是:不是很清楚)
4、建立Order.hbm.xml对象与关系映射文件
A、在此映射文件里generator主键生成器要设为assigned(主键由外部程序生成,无需hibernate参与)
B、并且在此文件里的<many-to-one>的标签中最好是不要设置cascade
但要设置column="外键"
(因为多对一的关系,多方的多条记录可能对于一方的一条记录,所以插入、更新、删除等操作时,不需要级联操作
)
5、建立业务操作类
三、一对多的关系
步骤:1、建立Hibernate-cfg.xml文件
2、建立多对一对象PublishHouse和Book
在PublishHouse中利用set集合讲Book组合进来
3、建立对象与关系映射文件
4、 建立数据库中的表
A. 在多的一方Book.hbm.xml中配置很简单
只有id(id中有generator)和property
B.在一的那方必须配置
<set name="bookSet" table="t_book" cascade="all">
<key column="PID"></key>
<one-to-many class="com.lovo.hibernate.OneToMany.Book"/>
</set>
5、建立业务操作类
四、多对多的关系
用两个一对多的关系配置就可以得到!
(但最重要的是cascade 和inverse的配置)
总结:
一、
get 和 load
A、get
1、在一级缓存中找Book 的代理Proxy
2、如果找不到就到数据库中去找
3、若数据中没有数据则返回null(这个与一级缓存无关)
4、如果数据库中有数据在一级缓存中就会创建代理对象
(是填充了数据的代理)
B、load
1、如果在一级缓存中找,如果找到了就什么都不做了
2、如果找不到的话就创建代理并且设置OID(与数据库无关,只跟一级缓存有关)
3、无论是对代理对象的任何方法,都会触发查找数据库(例如在代理中调用tostring)
(注意是否到二级缓存去找,根据配置来定,二级缓存没有空的代理)
二、cascade和inverse
1、cascade是级联、就是插入,修改,删除等操作会不会影响另外一个
Cascade属性的可能值有
all: 所有情况下均进行关联操作,即save-update和delete。
none: 所有情况下均不进行关联操作。这是默认值。
save-update: 在执行save/update/saveOrUpdate时进行关联操作。
delete: 在执行delete 时进行关联操作。
all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。
2、inverse
很难理解,反正一边true,一边就要设置成false,
具体的理解,我在另外的一章总结中做了详细的总结!
分享到:
相关推荐
在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`是Hibernate 3.0版本中的两个核心文件,它们定义了...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库。本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)...
在开发过程中,IDE如Eclipse或IntelliJ IDEA提供了对Hibernate的集成支持,包括代码生成、对象关系图显示以及自动配置检查,这使得关系映射的设置更加直观和便捷。 六、最佳实践 1. 选择合适的集合类型:根据业务...
Hibernate对象关系映射一对多 很基础等文档
在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而Eclipse作为主流的Java集成开发环境,其丰富的插件生态使得开发效率得以提升。"hibernatetools-Update-4.1.1.Final_...
对象-关系映射—Hibernate 培训 (中文) 目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳...
在HibernateTools 3.2.4版本中,它包含了一系列的特性与插件,以支持更便捷地进行对象关系映射(ORM)管理和数据库交互。 一、Hibernate Tools的主要功能: 1. **逆向工程(Reverse Engineering)**:能够从现有的...
Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...
Hibernate Tools是开发者在使用Hibernate框架进行Java应用程序开发时的重要辅助工具,它为Eclipse IDE提供了强大的集成支持,包括对象关系映射(ORM)的可视化设计、逆向工程、数据库生成、HQL和SQL查询编辑等功能。...
如果修改了Student或Course对象的关联关系,然后调用`session.update(student)`或`session.update(course)`,Hibernate会自动更新关联表中的记录,以反映新的关系状态。 六、级联删除 当调用`session.delete...
总结,`hibernate-commons-annotations-5.0.1.Final.jar`是Hibernate框架的重要组成部分,通过提供丰富的元数据注解,简化了Java对象与数据库之间的映射工作。对它的源码进行深入学习,不仅能够增强对JPA和Hibernate...
《HibernateTools 3.2.4 Beta1:高效数据库管理和对象关系映射工具》 HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作...
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
Hibernate 是一个开源的对象关系映射(Object Relational Mapping,ORM)框架,它允许开发者将 Java 对象映射到数据库表,并支持多种数据库管理系统(Database Management Systems,DBMS)。Hibernate 3.5.0-Final ...
Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个`hibernate-release-5.0.7.Final`版本中,包含了所有相关的jar包,为开发者...
Hibernate是Java领域内最受欢迎的对象关系映射(ORM)框架之一,它简化了Java应用程序与关系型数据库之间的交互,使得开发人员能够用面向对象的方式处理数据库操作,而无需深入了解SQL语法或数据库API。通过将Java...
在Java的持久化层开发中,Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,手动编写实体类和映射文件(hbm.xml)的过程仍需消耗大量时间。为了解决这一问题,两个工具——hibernate...
在Java世界中,ORM(Object-Relational Mapping)框架如Hibernate是将数据库关系模型与对象模型之间进行映射的关键工具,极大地简化了数据库操作。本文将深入探讨Hibernate ORM中的一个特定概念——继承关联关系的...
Hibernate ORM,作为Java领域最著名的对象关系映射框架之一,自诞生以来就深受开发者喜爱。2018年7月5日,Hibernate发布了其最新版本——5.3.2.Final,带来了诸多改进和新特性,为开发者提供了更为高效、稳定的持久...