Hibernate关系映射
本文为博主原创,允许转载,但请声明原文地址: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使用
B. 一对多:一方添加多方的Set集合
注解:@OneToMany和@JoinColumn指定多方的外键名
Xml:
C. 多对一:在多方加外键
注解:@ManyToOne
Xml:
注:一对多、多对一的双向关系,交给多方维护关系,在@OneToMany设置mappedBy
属性,xml在
D. 多对多:
单向:
注解:在维护集合上@ManyToMany,@JoinTable指定中间表名和列名,
JoinColumns、JoinColumn、inverseJoinColumn
Xml:
双向:
注解:单向的基础上在另一边的集合设置@ManyToMany(mappedBy="")
Xml:另一边也设置
E. 组件映射:作为表的一部分的Bean,不作为实体,如学生证作为学生实体的一部分;
实体中的组件引用加@Embedded
Xml中用
注:(1)双向关联mappedBy属性必须设定,xml用
表示关系由对方主导;
(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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Hibernate in das SpringBoot-Projekt integrieren Vorwort Hibernate ist ein beliebtes ORM-Framework (Object Relational Mapping), das Java-Objekte Datenbanktabellen zuordnen kann, um Persistenzvorgänge zu erleichtern. Im SpringBoot-Projekt kann uns die Integration von Hibernate dabei helfen, Datenbankoperationen einfacher durchzuführen. In diesem Artikel wird die Integration von Hibernate in das SpringBoot-Projekt vorgestellt und entsprechende Beispiele bereitgestellt. 1.Abhängigkeiten einführenFügen Sie die folgenden Abhängigkeiten in die Datei pom.xml ein: org.springframework.bootspring-boot-starter-data-jpam

Was ist JPA? Wie unterscheidet es sich von JDBC? JPA (JavaPersistence API) ist eine Standardschnittstelle für objektrelationales Mapping (ORM), die es Java-Entwicklern ermöglicht, vertraute Java-Objekte zum Betreiben von Datenbanken zu verwenden, ohne SQL-Abfragen direkt in die Datenbank schreiben zu müssen. JDBC (JavaDatabaseConnectivity) ist die Standard-API von Java für die Verbindung mit Datenbanken. Sie erfordert, dass Entwickler SQL-Anweisungen verwenden, um die Datenbank zu betreiben. JPA kapselt JDBC, bietet eine bequemere und übergeordnete API für die objektrelationale Zuordnung und vereinfacht Datenzugriffsvorgänge. Was ist in JPA eine Entität? juristische Person

Java ist eine objektorientierte Programmiersprache, die im Bereich der Softwareentwicklung weit verbreitet ist. Hibernate ist ein beliebtes Java-Persistenz-Framework, das eine einfache und effiziente Möglichkeit bietet, die Persistenz von Java-Objekten zu verwalten. Während des Entwicklungsprozesses treten jedoch häufig Hibernate-Fehler auf, die dazu führen können, dass das Programm abnormal beendet wird oder instabil wird. Der Umgang mit und die Vermeidung von Hibernate-Fehlern ist zu einer Fähigkeit geworden, die Java-Entwickler beherrschen müssen. In diesem Artikel werden einige gängige Hib vorgestellt

Wenn es um Gaming-Laptops von ASUS geht, fällt mir als Erstes Republic of Gamers ein. Aber zusätzlich zu den High-End-Gaming-Laptops der Republic of Gamers bietet ASUS auch Mainstream-Gaming-Laptops der Flying Fortress-Serie an Schauen Sie sie sich gemeinsam an. Wie wäre es mit ASUS Flying Fortress 7, das bei Gamern am beliebtesten ist? ASUS Flying Fortress 7 Die Notebooks der Flying Fortress-Serie sind für das problemlose Spielen großer Spiele geeignet. Sie legen Wert auf Robustheit und Langlebigkeit. Sie waren schon immer eine beliebte Wahl bei Gamern und Studenten. Grundkonfiguration Werfen wir zunächst einen Blick auf einige der Kernkonfigurationen dieser Flying Fortress 7. Aus der Konfigurationstabelle ist AMD Ryzen73750H+NVIDIA GeForceGTX1660Ti am bemerkenswertesten

Das Android-System und der Linux-Kernel sind zwei eng verwandte Einheiten, und die Beziehung zwischen ihnen ist eng und komplex. Im Android-System spielt der Linux-Kernel eine wichtige Rolle, da er zugrunde liegende Hardwaretreiber und Systemaufrufunterstützung für das Android-System bereitstellt. In diesem Artikel wird die Beziehung zwischen dem Android-System und dem Linux-Kernel untersucht, wie sie interagieren und zusammenarbeiten, und einige spezifische Codebeispiele bereitstellen. Android ist ein mobiles Betriebssystem, das auf Basis des Linux-Kernels entwickelt wurde und hauptsächlich für mobile Geräte wie Smartphones und Tablets verwendet wird. L

Forschung zur Beziehung zwischen Huawei Hongmeng-System und Android Mit der kontinuierlichen Weiterentwicklung der Technologie sind Smartphones zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. Als einer der weltweit führenden Mobiltelefonhersteller arbeitet Huawei ständig an Innovationen und ist bestrebt, bessere mobile Betriebssysteme und Benutzererlebnisse bereitzustellen. In den letzten Jahren begann Huawei mit der Unterdrückung von Huawei durch die USA, die Entwicklung seines eigenen Betriebssystems zu beschleunigen, und HarmonyOS entstand. In diesem Zusammenhang haben die Menschen begonnen, der Beziehung zwischen dem Hongmeng-System und Android Aufmerksamkeit zu schenken. Zuerst müssen wir verstehen

Die Unterschiede zwischen Hibernate und Mybatis: 1. Implementierungsmethode; 3. Vergleich der Objektverwaltung; Detaillierte Einführung: 1. Implementierungsmethode: Hibernate ist eine vollständige Objekt-/Relational-Mapping-Lösung, die Objekte Datenbanktabellen zuordnet, während MyBatis von Entwicklern das manuelle Schreiben von SQL-Anweisungen und ResultMap erfordert. 2. Leistung: Hibernate ist in Bezug auf die Entwicklungsgeschwindigkeit schneller MyBatis, weil Hibernate die DAO-Ebene usw. vereinfacht.

Hibernate ist ein hervorragendes ORM-Framework, das den Datenzugriff zwischen Java-Anwendungen und relationalen Datenbanken vereinfacht. In Hibernate können wir Eins-zu-Viele- und Viele-zu-Viele-Beziehungen verwenden, um komplexe Datenmodelle zu verarbeiten. Die Eins-zu-Viele-Beziehung von Hibernate In Hibernate bedeutet eine Eins-zu-Viele-Beziehung, dass eine Entitätsklasse mehreren anderen Entitätsklassen entspricht. Beispielsweise kann eine Bestellung mehreren Bestellpositionen (OrderItem) entsprechen, und ein Benutzer (User) kann mehreren Bestellungen (Order) entsprechen. Um eine Eins-zu-Viele-Beziehung in Hibernate zu implementieren, müssen Sie in der zu speichernden Entitätsklasse ein Sammlungsattribut definieren
