cari
Hibernate关系映射Jun 07, 2016 pm 02:50 PM
hibernateperhubunganAsalpemetaan

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-140.html 1、关系映射: A.一对一:主键关联:主键关联 单向:外键关联 双向:外键关联或中间表 联合主键: @OneToOne:一对一关联关系,注解在对方类引用的get方法上 @Join

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-140.html

1、关系映射:
  A. 一对一:主键关联:主键关联
   单向:外键关联
   双向:外键关联或中间表
   联合主键:
     @OneToOne:一对一关联关系,注解在对方类引用的get方法上
     @JoinColumn:设置关联的外键名,name属性
     @PrimaryKeyJoinColumn:设置主键关联
     @JoinColumns设置联合主键
   xml使用标签,添加unique属性即可
  B. 一对多:一方添加多方的Set集合
   注解:@OneToMany和@JoinColumn指定多方的外键名
   Xml:
  C. 多对一:在多方加外键
   注解:@ManyToOne
   Xml:
   注:一对多、多对一的双向关系,交给多方维护关系,在@OneToMany设置mappedBy
   属性,xml在设置inverse="false"
  D. 多对多:
   单向:
    注解:在维护集合上@ManyToMany,@JoinTable指定中间表名和列名,
     JoinColumns、JoinColumn、inverseJoinColumn
    Xml:
   双向:
   注解:单向的基础上在另一边的集合设置@ManyToMany(mappedBy="")
   Xml:另一边也设置标签
  E. 组件映射:作为表的一部分的Bean,不作为实体,如学生证作为学生实体的一部分;
   实体中的组件引用加@Embedded
   Xml中用标签
注:(1)双向关联mappedBy属性必须设定,xml用的property-ref属性
  表示关系由对方主导;
 (2)双向关系要很注意在调用过程中可能出现实体无限循环调用的堆栈溢出的危险;
2、关联关系下的增删改查:
(1) 关联关系设置cascade级联操作,只影响增删改;
(2) 若被关联对象为一方,默认直接取出来,EAGER;
(3) 若被关联对象为多方,默认是延迟加载,LAZY;
(4) fetch设置查询读取级联操作,只影响查询操作,默认LAZY;
(5) 双向的关联关系有些操作会导致重复操作,注意设置延迟加载避免多余操作;
(6) 删除:先查询再删除,防止级联删除--破坏掉内存实体的关联关系或HQL;
3、集合映射:
(1) 常规方式:Set;
(2) List:加注解和Set一样,List是为了能够排序,@OrderBy指定排序参数;
(3) Map:key为不可重复子段(多数为主键),@MapKey;value为集合元素实体,较适用于查询;
4、继承映射:
(1) 少数属性继承关系:Single-Table,一张表存储所有类,加一个类型标记位子段;
(2) 每个类各自一张表:Table-per-Class,没法存储继承多态关系,继承多态调用麻烦,需要维护每个实体主键的唯一性;
(3) 按照继承关系,父类有表,子类也有表,但是共同属性在父表中:Joined,父表和子表要设置主键关联,维护主键唯一性,查询必须连接表,新子类要建新表;
注解:A. @Inheritance:注明继承映射,指定继承映射策略,用于父类;
      B. @DiscriminatorColumn:标明类的类型标记位,用于父类;
      C. @DiscriminatorValue("标记位值"):类类型标记位值;
5、树状映射:
 (1)对象设计:id、父亲节点引用、孩子节点集合、其他的节点内容;
 (2)表设计:id、parent_id、其他节点内容列;
 (3)设置@Entity、@Id、主键生成策略、@ManyToOne(设置外键列"parent_id")、@OneToMany(mappedBy="parent");
 (4)设置修改级联,LAZY还是EAGER具体分析才选择;
 (5)设置好对象间父子关系,存入数据库即可;
 (6)查询使用递归方式查询;

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-140.html

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
SpringBoot项目里怎么集成HibernateSpringBoot项目里怎么集成HibernateMay 18, 2023 am 09:49 AM

在SpringBoot项目中集成Hibernate前言Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在SpringBoot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作,本文将介绍如何在SpringBoot项目中集成Hibernate,并提供相应的示例。1.引入依赖在pom.xml文件中引入以下依赖:org.springframework.bootspring-boot-starter-data-jpam

Java JPA 面试题精选:检验你的持久化框架掌握程度Java JPA 面试题精选:检验你的持久化框架掌握程度Feb 19, 2024 pm 09:12 PM

什么是JPA?它与JDBC有什么区别?JPA(JavaPersistenceapi)是一个用于对象关系映射(ORM)的标准接口,它允许Java开发者使用熟悉的Java对象来操作数据库,而无需编写直接针对数据库的sql查询。而JDBC(JavaDatabaseConnectivity)是Java用于连接数据库的标准API,它需要开发者使用SQL语句来操作数据库。JPA将JDBC封装起来,为对象-关系映射提供了更方便、更高级别的API,简化了数据访问操作。在JPA中,什么是实体(Entity)?实体

Java错误:Hibernate错误,如何处理和避免Java错误:Hibernate错误,如何处理和避免Jun 25, 2023 am 09:09 AM

Java是一种面向对象编程语言,它被广泛地应用于软件开发领域。Hibernate是一种流行的Java持久化框架,它提供了一种简单且高效的方式来管理Java对象的持久化。然而,开发过程中经常会遇到Hibernate错误,这些错误可能会导致程序的异常终止或者不稳定。如何处理和避免Hibernate错误成为了Java开发者必须掌握的能力。本文将介绍一些常见的Hib

探讨安卓系统与Linux内核之间的关系探讨安卓系统与Linux内核之间的关系Mar 14, 2024 pm 12:48 PM

安卓系统与Linux内核是息息相关的两个实体,它们之间的关系紧密而又复杂。在安卓系统中,Linux内核充当着重要的角色,为安卓系统提供了底层的硬件驱动和系统调用支持。本文将探讨安卓系统与Linux内核之间的关系,以及它们是如何交互、协同工作的,同时提供一些具体的代码示例。安卓系统是基于Linux内核开发的移动操作系统,主要用于智能手机、平板电脑等移动设备。L

hibernate和mybatis有哪些区别hibernate和mybatis有哪些区别Jan 03, 2024 pm 03:35 PM

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。详细介绍:1、实现方式,Hibernate是一个完整的对象/关系映射解决方案,将对象与数据库表进行映射,MyBatis则需要开发者手动编写SQL语句以及ResultMap;2、性能,Hibernate在开发速度上可能比MyBatis快,因为Hibernate简化了DAO层等等。

华为鸿蒙系统与安卓的关系研究华为鸿蒙系统与安卓的关系研究Mar 23, 2024 am 11:54 AM

华为鸿蒙系统与安卓的关系研究随着科技的不断发展,智能手机已经成为人们生活中不可或缺的一部分。而作为全球领先的手机制造商之一,华为一直在不断创新,致力于提供更好的手机操作系统和用户体验。近年来,随着美国对华为的打压,华为开始加速研发自主操作系统,于是鸿蒙系统(HarmonyOS)应运而生。在此背景下,人们开始关注起了鸿蒙系统与安卓之间的关系。首先,我们需要了解

如何在Hibernate中执行批量插入更新操作?如何在Hibernate中执行批量插入更新操作?Aug 27, 2023 pm 11:17 PM

在本文中,我们将看到如何在Hibernate中执行批量插入/更新。每当我们执行一条sql语句时,我们都是通过对数据库进行网络调用来完成的。现在,如果我们必须向数据库表中插入10个条目,那么我们必须进行10次网络调用。相反,我们可以通过使用批处理来优化网络调用。批处理允许我们在单个网络调用中执行一组SQL语句。为了理解和实施这一点,让我们定义我们的实体−@EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Java Hibernate中一对多和多对多关系的映射方式是什么Java Hibernate中一对多和多对多关系的映射方式是什么May 27, 2023 pm 05:06 PM

Hibernate的一对多和多对多Hibernate是一个优秀的ORM框架,它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中,我们可以使用一对多和多对多的关系来处理复杂的数据模型。Hibernate的一对多在Hibernate中,一对多关系是指一个实体类对应多个另一个实体类。比如,一个订单(Order)可以对应多个订单项(OrderItem),一个用户(User)可以对应多个订单(Order)。要在Hibernate中实现一对多关系,需要在实体类中定义一个集合属性来存

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),