首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate学习笔记 多表映射

前面说了Hibernate的单表映射,由于是实体类和数据表之间一对一的映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间的关系。因此稍微复杂一点。...我们在文章实体添加如下一段,对应的Getter省略了: @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) private...单向的一对多映射并不高效,如果删除了某文章的某评论,Hibernate进行的操作是这样:首先删除关联表该文章关联的所有评论,然后再将其他评论添加回关联表,最后,根据orphanRemoval决定是否删除评论表孤立的评论...需要注意在双向注解OneToMany需要额外一个参数,mappedBy,指定ManyToOne注解那一边的属性名,这样Hibernate才会明白这是一个双向注解。...以上面我们建立的作者、文章、评论实体例,我们如果添加一个标签类,一个标签下可以存在多篇文章;一篇文章也可以有多个标签,这样就实现了一个多对多映射。要实现多对多映射,必须要有一个关联表。

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

JPA 注解学习

@Entity 声明一个类实体Bean。 @Table 说明此实体映射的表名,目录,schema的名字。 @Id 声明此表的主键。 @GeneratedValue 定义主键的增长策略。...上例 passport_id, 因为Customer 关联属性 passport, Passport 的主键 id. • 通过关联表来保存两个实体之间的关联关系。...本例company_id,因为关联的属性是company, Company的主键 id. @ManyToOne 注解有个targetEntity属性,该参数定义了目标实体名。...双向 规范多对一端几乎总是双向关联的主体(owner)端,而一对多的关联注解 @OneToMany(mappedBy=) @Entity public class Troop { @OneToMany...通常使用惰性加载的方式, @Basic(fetch=FetchType.LAZY) @SecondaryTable @javax.persistence.SecondaryTable 将一个实体映射到多个数据库表

2.9K10

探索Hibernate的奥秘:简解其使用与实现过程

> 在这个配置文件,我们定义了数据库连接属性、连接池设置、SQL方言、SQL输出以及实体类的映射。...通过这些配置,Hibernate可以自动管理数据库连接并生成相应的SQL语句。 4. 实体映射 实体类是Hibernate进行对象关系映射的核心。...每个实体类对应数据库的一个表,每个类的属性对应表的列。通过注解或XML配置,我们可以指定这些映射关系。...@Entity表示这是一个实体类,@Id表示主键,@GeneratedValue定义了主键的生成策略。此外,类的属性会自动映射到对应的数据库列。 5....Hibernate的基本操作 5.1 保存实体 保存实体是将对象持久化到数据库的过程。通过Session对象,我们可以轻松地将实体保存到数据库

12010

Hibernate关联关系

Wife的代码不用改变 在核心配置文件hibernate.cfg.xml添加实体类的映射即可 <...总结 单向连接就是只能通过一个对象访问另一个对象的属性,只需要在一个实体添加另外一个类的对象成员变量即可,并且在该对象的get方法上添加OneToOne注解即可,就表示这个对象的主键会作为该实体类的外键...@OneToMany(mappedBy="dormitory") //添加注解,由于是双向外键关联,必须添加mappedBy,由于外键就是One的一方的主键,因此这里的只需要在OneToMany添加即可...One的一方的外键 在单向外键关联,如果通过One的一方获取Many的一方数据,那么需要在One的实体添加Many的实体类的对象其成员变量,同时在这个成员变量的get方法上方使用@OneToMany...如果想要通过Many的一方获取One的数据,那么需要在Many的实体添加One的实体类的对象其成员变量,同时在这个成员变量的get方法上使用@ManyToOne这个注解 在双向外键关联,那么我们在使用

6.2K30

《Java从入门到放弃》框架入门篇:使用注解的方式配置hibernate映射关系

所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中的实体类、映射文件,还有hibernate的mapping标签都删除,然后在DBBrowser再次生成实体类。如下图: ?...红框的选项就表示直接在POJO上以注解的方式加上映射关系。注意括号内的hibernate版本,必须是3.2及以上的才行。 生成后的实体类(Author和Blog)代码我就不复制上来了,内容太多。...主要说明一下映射关系的注解。 cascade属性的值对应有javax.persistence.CascadeType的几个选项。 PERSIST:添加时级联。 MERGE:更新时级联。...如果你设置ALL以外的值,你会发现,完全没有级联!!! ? 骗子啊骗子!!!!! 所以,如果你只需要在添加或更新时级联,一般这样设置。

61320

JPA实体的注解

@Entity   标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应...,列名以及对应到数据库汇的类型等,@Column(length,nullable,name)   例如,我们string对应到数据库的text就可以这样写,@Column(columnDefinition...*ToMany 默认加载方式懒加载 @Entity @Entity标记在类名上面,作为实体类的标识 @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与...@OneToMany 描述一个一对多的关联,该属性应该为集体类型,在数据库并没有实际字段。 ...name:该字段的名称.由于@JoinColumn描述的是一个关联字段,ManyToOne,则默认的名称由其关联的实体决定.

3.8K70

《Java从入门到放弃》框架入门篇:使用注解的方式配置hibernate映射关系

所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中的实体类、映射文件,还有hibernate的mapping标签都删除,然后在DBBrowser再次生成实体类。如下图: ?...红框的选项就表示直接在POJO上以注解的方式加上映射关系。注意括号内的hibernate版本,必须是3.2及以上的才行。 生成后的实体类(Author和Blog)代码我就不复制上来了,内容太多。...主要说明一下映射关系的注解。 cascade属性的值对应有javax.persistence.CascadeType的几个选项。 PERSIST:添加时级联。 MERGE:更新时级联。...如果你设置ALL以外的值,你会发现,完全没有级联!!!

72870

Hibernate二级缓存(一)

缓存级别Hibernate提供了两种类型的二级缓存:实体缓存和集合缓存。实体缓存用于缓存实体类对象,集合缓存用于缓存关联实体的集合属性。...缓存实现策略Hibernate的二级缓存可以使用多种实现策略,包括使用内存、使用第三方缓存提供程序(Ehcache、Infinispan等)或自定义实现。...实体缓存的使用要使用实体缓存,您可以在实体类上使用@Cacheable注解,或者在Hibernate映射文件配置。...例如:@Entity@Cacheablepublic class Product { // ...}在上面的示例,我们使用@Cacheable注解启用了对Product实体的缓存。...集合缓存的使用要使用集合缓存,您可以在关联的集合属性上使用@Cache注解,或者在Hibernate映射文件配置。

30620

Hibernate双向一对多映射

双向一对多映射Hibernate中常见的关系映射之一。在这种映射中,两个实体类之间存在一个一对多的关系,其中一个实体类作为“一”的一方,另一个实体类作为“多”的一方。...在双向一对多映射中,需要在两个实体类之间建立双向关联。假设我们有两个实体类:一个是主实体类(One)和一个从实体类(Many)。...主实体类(One)有多个从实体类(Many)的引用,而从实体类(Many)只有一个主实体类(One)的引用。首先,我们需要在主实体类(One)创建一个集合来存储从实体类(Many)的引用。...这样,我们就建立了主实体类(One)和从实体类(Many)之间的双向一对多关系。接下来,我们将给出一个示例来说明如何使用双向一对多映射。...通过调用作者对象的getBooks()方法,我们可以获取该作者写的所有书籍,并通过add()方法将书籍添加到集合

88430

走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

Hibernate注解开发 在Hibernate我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件的配置。下面我就来大家详细介绍。...接着在src目录下创建一个cn.itheima.domain包,并在该包下创建一个Book实体类,由于Book实体写有注解配置,所以就不用编写那个映射配置文件啦!...如何设定类的属性不在表映射? 这两个问题我们一起解决。废话不多说,直接上例子。在cn.itheima.domain包下再编写一个Person实体类,同样使用注解配置。...Hibernate关联映射——一对多(多对一) 仍以客户(Customer)和订单(Order)例来开始我的表演。...扩展 Hibernate注解@Cascade的DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师例开始我的表演,我是使用注解完成这种多对多的配置

1.8K00

走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

Hibernate注解开发 在Hibernate我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件的配置。下面我就来大家详细介绍。...接着在src目录下创建一个cn.itheima.domain包,并在该包下创建一个Book实体类,由于Book实体写有注解配置,所以就不用编写那个映射配置文件啦!...如何设定类的属性不在表映射?这两个问题我们一起解决。废话不多说,直接上例子。在cn.itheima.domain包下再编写一个Person实体类,同样使用注解配置。...Hibernate关联映射——一对多(多对一) 仍以客户(Customer)和订单(Order)例来开始我的表演。...扩展 Hibernate注解@Cascade的DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师例开始我的表演,我是使用注解完成这种多对多的配置

1.8K10

Spring 全家桶之 Spring Data JPA(四)

(一对多中一的这边)添加了外键配置,对于客户而言,具备了维护外键的作用 */ // 联系人 // 客户与联系人一对多关系,用@OneToMany表示 @OneToMany...customerDao.save(customer); linkManDao.save(linkMan); } } 执行的SQL语句 查看数据库,可以看到cst_linkman表的外键空...SQL语句而完成外键关系的建立,而多的一方无需拥有外键关系的维护 Customer实体类修改,mappedBy是对方配置关系的属性名称 @OneToMany(mappedBy = "customer")...,添加级联属性(需要添加到多表映射关系的注解上) cascade(配置级联) 级联添加:当保存一个客户的同时保存客户的联系人 级联删除:删除一个客户的同时删除客户的联系人 级联操作测试 首先修改配置文件...">update Customer实体类增加cascade属性 @OneToMany(mappedBy = "customer",cascade

1.6K20
领券