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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Mengintegrasikan Hibernate dalam SpringBoot Project Preface Hibernate ialah rangka kerja ORM (Object Relational Mapping) yang popular yang boleh memetakan objek Java ke jadual pangkalan data untuk memudahkan operasi kegigihan. Dalam projek SpringBoot, menyepadukan Hibernate boleh membantu kami melaksanakan operasi pangkalan data dengan lebih mudah Artikel ini akan memperkenalkan cara untuk menyepadukan Hibernate dalam projek SpringBoot dan memberikan contoh yang sepadan. 1.Perkenalkan dependenciesPerkenalkan dependencies berikut dalam fail pom.xml: org.springframework.bootspring-boot-starter-data-jpam

Apa itu JPA? Bagaimanakah ia berbeza daripada JDBC? JPA (JavaPersistence API) ialah antara muka standard untuk pemetaan hubungan objek (ORM), yang membenarkan pembangun Java menggunakan objek Java biasa untuk mengendalikan pangkalan data tanpa menulis pertanyaan SQL secara langsung terhadap pangkalan data. JDBC (JavaDatabaseConnectivity) ialah API standard Java untuk menyambung ke pangkalan data Ia memerlukan pembangun menggunakan pernyataan SQL untuk mengendalikan pangkalan data. JPA merangkum JDBC, menyediakan API yang lebih mudah dan tahap lebih tinggi untuk pemetaan hubungan objek, dan memudahkan operasi capaian data. Dalam JPA, apakah entiti? entiti

Java ialah bahasa pengaturcaraan berorientasikan objek yang digunakan secara meluas dalam bidang pembangunan perisian. Hibernate ialah rangka kerja kegigihan Java yang popular yang menyediakan cara yang mudah dan cekap untuk mengurus kegigihan objek Java. Walau bagaimanapun, ralat Hibernate sering ditemui semasa proses pembangunan, dan ralat ini boleh menyebabkan atur cara ditamatkan secara tidak normal atau menjadi tidak stabil. Cara mengendalikan dan mengelakkan ralat Hibernate telah menjadi kemahiran yang mesti dikuasai oleh pembangun Java. Artikel ini akan memperkenalkan beberapa Hib biasa

Apabila bercakap tentang komputer riba permainan daripada ASUS, perkara pertama yang terlintas di fikiran ialah Republic of Gamers Tetapi sebagai tambahan kepada komputer riba permainan mewah di Republic of Gamers, ASUS juga mempunyai komputer riba permainan arus perdana dalam siri Flying Fortress lihat mereka bersama-sama. Bagaimana pula dengan ASUS Flying Fortress 7, yang paling popular di kalangan pemain. ASUS Flying Fortress 7 Komputer riba siri Flying Fortress ASUS diletakkan untuk bermain permainan berskala besar dengan mudah Mereka memfokuskan pada kekukuhan dan ketahanan. Konfigurasi asas Mula-mula, mari kita lihat beberapa konfigurasi teras Flying Fortress 7 ini. Daripada jadual konfigurasi, yang paling penting ialah AMD Ryzen73750H+NVIDIA GeForceGTX1660Ti

Sistem Android dan kernel Linux adalah dua entiti yang berkait rapat, dan hubungan antara mereka adalah rapat dan kompleks. Dalam sistem Android, kernel Linux memainkan peranan penting, menyediakan pemacu perkakasan asas dan sokongan panggilan sistem untuk sistem Android. Artikel ini akan meneroka hubungan antara sistem Android dan kernel Linux, cara ia berinteraksi dan berfungsi bersama, serta menyediakan beberapa contoh kod khusus. Android ialah sistem pengendalian mudah alih yang dibangunkan berdasarkan kernel Linux dan digunakan terutamanya untuk peranti mudah alih seperti telefon pintar dan tablet. L

Penyelidikan tentang hubungan antara sistem Huawei Hongmeng dan Android Dengan perkembangan teknologi yang berterusan, telefon pintar telah menjadi bahagian yang amat diperlukan dalam kehidupan manusia. Sebagai salah satu pengeluar telefon mudah alih terkemuka dunia, Huawei sentiasa berinovasi dan komited untuk menyediakan sistem pengendalian mudah alih dan pengalaman pengguna yang lebih baik. Dalam beberapa tahun kebelakangan ini, dengan penindasan Amerika Syarikat terhadap Huawei, Huawei telah mula mempercepatkan pembangunan sistem pengendaliannya sendiri, dan HarmonyOS wujud. Dalam konteks ini, orang ramai telah mula memberi perhatian kepada hubungan antara Sistem Hongmeng dan Android. Pertama, kita perlu faham

Perbezaan antara hibernate dan mybatis: 1. Kaedah pelaksanaan 2. Prestasi 3. Perbandingan pengurusan objek; Pengenalan terperinci: 1. Kaedah pelaksanaan, Hibernate ialah penyelesaian pemetaan objek/hubungan yang lengkap yang memetakan objek ke jadual pangkalan data, manakala MyBatis memerlukan pembangun menulis pernyataan SQL dan ResultMap secara manual 2. Prestasi, Hibernate adalah mungkin dari segi kelajuan pembangunan Lebih cepat daripada MyBatis kerana Hibernate memudahkan lapisan DAO dan sebagainya.

Hibernate satu-ke-banyak dan banyak-ke-banyak Hibernate ialah rangka kerja ORM yang sangat baik yang memudahkan akses data antara aplikasi Java dan pangkalan data hubungan. Dalam Hibernate, kita boleh menggunakan perhubungan satu-ke-banyak dan banyak-ke-banyak untuk mengendalikan model data yang kompleks. Satu-ke-banyak Hibernate Dalam Hibernate, hubungan satu-dengan-banyak bermakna satu kelas entiti sepadan dengan berbilang kelas entiti lain. Sebagai contoh, pesanan boleh sepadan dengan berbilang item pesanan (OrderItem), dan pengguna (Pengguna) boleh sepadan dengan berbilang pesanan (Pesanan). Untuk melaksanakan perhubungan satu-ke-banyak dalam Hibernate, anda perlu menentukan atribut koleksi dalam kelas entiti untuk disimpan
