-
Hibernate注解——@Table注解 II -Catalog:將遠(yuǎn)程或本地的數(shù)據(jù)庫服務(wù)器中的實(shí)例或庫映射到用戶主機(jī),以方便用戶執(zhí)行各種操作。 -Schema:數(shù)據(jù)庫對(duì)象的集合,一個(gè)用戶一般對(duì)應(yīng)一個(gè)schema。 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關(guān)注我,加我慕課好友,互相學(xué)習(xí),共同進(jìn)步!】查看全部
-
Hibernate注解——@Table注解 I 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關(guān)注我,加我慕課好友,互相學(xué)習(xí),共同進(jìn)步!】查看全部
-
Hibernate注解——@Entity注解 Ps1:若表名與實(shí)體類名相同,(name==Name)視為相同。 Ps2:@Id 給實(shí)體類標(biāo)識(shí)主鍵。 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關(guān)注我,加我慕課好友,互相學(xué)習(xí),共同進(jìn)步!】查看全部
-
Hibernate注解——hibernate.cfg.xml 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關(guān)注我,加我慕課好友,互相學(xué)習(xí),共同進(jìn)步!】查看全部
-
Hibernate注解——簡(jiǎn)介 一、Hibernate注解簡(jiǎn)介: 1.使用注解的目的:為了簡(jiǎn)化繁瑣的ORM映射文件(*.hbm)的配置。 二、JPA與Hibernate的關(guān)系: 1.JPA全稱Java Persistence API。 2.JPA注解是JAVAEE的規(guī)范和標(biāo)準(zhǔn)。 3.JPA是標(biāo)準(zhǔn)接口,Hibernate是它的一種實(shí)現(xiàn),但是其功能是JPA的超集,更加強(qiáng)大。 4.Hibernate依靠hibernate-annotation,hibernate-entitymanager和hibernate-core三個(gè)組件來實(shí)現(xiàn)。 5.開發(fā)中優(yōu)先使用JPA注解,更有利于程序的移植和擴(kuò)展。 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關(guān)注我,加我慕課好友,互相學(xué)習(xí),共同進(jìn)步!】查看全部
-
映射關(guān)系總結(jié)查看全部
-
Java 持久化的 API 接口查看全部
-
JPA注解(除關(guān)系映射)查看全部
-
當(dāng)使用雙向一對(duì)一、雙向多對(duì)多時(shí).都需要在某一方中使用@joinColumn(mappedBy="xxx")注解,指定該方被另一方關(guān)聯(lián)(相當(dāng)于把控制權(quán)拋出). 一對(duì)一時(shí),mappedBy應(yīng)該設(shè)置為另一方的主鍵屬性名. 多對(duì)多時(shí),mappedBy應(yīng)該設(shè)置為另一方的Set類型的屬性名. 雙向多對(duì)多: @Entity public class Student{ @Id private int sid; private String sname; @ManyToMany @JoinTable( name="teachers_students", joinColumns={@JoinColumn(name="sid")}, inverseJoinColumns={@JoinColumn(name="tid")} ) private Set<Teacher> teacher; } @Entity public class Teacher{ @Id private int tid; private String name; @ManyToMany(mappedBy="teacher") private Set<Student> student; }查看全部
-
多對(duì)多單向外鍵 學(xué)生和教師構(gòu)成多對(duì)多的關(guān)聯(lián)關(guān)系. 其中一個(gè)多方持有另一個(gè)多方的集合對(duì)象. 多對(duì)多關(guān)系中,必須存在一個(gè)中間表來表示兩者的關(guān)系(可以通過注解生成表). 如果在一對(duì)多、多對(duì)一關(guān)系中,可以直接在多方表創(chuàng)建一個(gè)關(guān)聯(lián)字段,或者使用中間表也可以. 學(xué)生持有教師的集合(多對(duì)多) 學(xué)生類: @ManyToMany @JoinTable( name="teachers_students" , joinColumns={@JoinColumn(name="sid")}, inverseJoinColumns={@JoinColumn(name="tid")} ) @JoinTable注解用來標(biāo)識(shí)中間表.可以使用Hibernate自動(dòng)生成.也可以手動(dòng)生成. name屬性用來標(biāo)識(shí)中間表的表名. joinColumns屬性用來標(biāo)識(shí)中間表字段的名稱. inverseJoinColumns屬性用來標(biāo)識(shí)關(guān)聯(lián)的表位于中間表字段的名稱. @Entity public class Student{ @Id private int sid; private String sname; @ManyToMany @JoinTable( name="teachers_students", joinColumns={@JoinColumn(name="sid")}, inverseJoinColumns={@JoinColumn(name="tid")} ) private Set<Teacher> teacher; } @Entity public class Teacher{ @Id private int tid; private String name; } 在數(shù)據(jù)庫中存在學(xué)生表、教師表、學(xué)生教師關(guān)系表.關(guān)系表中則有sid、tid字段.查看全部
-
一對(duì)多(多對(duì)一)的雙向外鍵關(guān)聯(lián) @Entity public class ClassRoom{ @Id private Integer cid; private String name; @OneToMany(cascade="CascadeType.ALL") @JoinColumn(name="cid")) private Set<Student> set; } @Entity public class Student{ @Id @GeneratedValue(generator="ass") @GenericGenerator(name="ass",strategy="assigned") private String sid; private String gender; @ManyToOne(cascade="CascadeType.ALL") @JoinColumn(name="cid")) private ClassRoom classRoom; } 在保存數(shù)據(jù)時(shí),無論是先保存一方還是多方都可以.(添加一方即可,因?yàn)樵O(shè)置了級(jí)聯(lián))查看全部
-
一對(duì)多單向外鍵關(guān)聯(lián): 無論使用一對(duì)多還是多對(duì)一,外鍵字段都是存在多方的表當(dāng)中. 使用@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY) @JoinColumn(name="cid");指定外鍵名字. 使用多對(duì)一時(shí),多方的抓取策略fetch一般設(shè)置為EAGER、一方設(shè)置為L(zhǎng)AZY. 當(dāng)使用單向的一對(duì)多關(guān)聯(lián)時(shí),要先保存多方的數(shù)據(jù)再保存一方的數(shù)據(jù).外鍵存在多方表中. @Entity public class ClassRoom{ @Id private Integer cid; private String name; @OneToMany(cascade="CascadeType.ALL") @JoinColumn(name="cid")) private Set<Student> set; } @Entity public class Student{ @Id @GeneratedValue(generator="ass") @GenericGenerator(name="ass",strategy="assigned") private String sid; private String gender; private ClassRoom classRoom; } 保存數(shù)據(jù)時(shí)需要先保存班級(jí)再保存學(xué)生.設(shè)置了級(jí)聯(lián),當(dāng)保存班級(jí)信息時(shí),如果不存在學(xué)生信息會(huì)自動(dòng)保存學(xué)生信息.查看全部
-
多對(duì)一單向外鍵關(guān)聯(lián) @ManyToOne、@JoinColumn. @ManyToOne注解 cascade:指定級(jí)聯(lián)關(guān)系(CascadeType.ALL). fetch:指定抓取策略(FetchType.EAGER). @JoinColumn注解 name屬性:指明作為外鍵的列名(不需與關(guān)聯(lián)表的主鍵屬性名保持一致,要與表中的外鍵列名保持一致). 默認(rèn)情況下,關(guān)聯(lián)的實(shí)體的主鍵一般是用來做外鍵的,但如果此時(shí)不想主鍵作為外鍵.則需要設(shè)置referencedColumnName屬性. referencedColumnName屬性:指定外鍵表與參照表的哪個(gè)屬性進(jìn)行關(guān)聯(lián)(指定參照表字段的列名). 如果不指定referencedColumnName屬性,則默認(rèn)與關(guān)聯(lián)表的主鍵關(guān)聯(lián). @Entity public class ClassRoom{ @Id private Integer cid; private String name; } @Entity public class Student{ @Id @GeneratedValue(generator="ass") @GenericGenerator(name="ass",strategy="assigned") private String sid; private String gender; @ManyToOne(cascade="CascadeType.ALL") @JoinColumn(name="classID") private ClassRoom classRoom; }查看全部
-
一對(duì)一雙向外鍵查看全部
-
錄入數(shù)據(jù)時(shí),要先保存參照表再保存外鍵表. 一對(duì)一的雙向關(guān)聯(lián): 使用雙向關(guān)聯(lián),在參照表中仍然要存在外鍵表類類型的屬性,且必須使用@OneToOne注解的mappedBy屬性,來指明參照表被誰關(guān)聯(lián)(拋出控制權(quán)).不需使用@JoinColumn注解. 如果不使用mappedBy屬性,并且使用@JoinColumn注解指定另一方的主鍵,則在保存數(shù)據(jù)時(shí)就會(huì)發(fā)生錯(cuò)誤,類似死鎖問題.因?yàn)殡p方都是一方.使用@JoinColumn都會(huì)在自己表建立外鍵. 因此使用一對(duì)一的雙向關(guān)聯(lián),在參照表中是不會(huì)存在外鍵表的關(guān)聯(lián)字段(數(shù)據(jù)庫). 而在外鍵表中則存在參照表的關(guān)聯(lián)字段(數(shù)據(jù)庫). 但是都存在另一方類類型的屬性. 設(shè)計(jì)數(shù)據(jù)表時(shí),參照表不需有關(guān)聯(lián)字段,而外鍵表則需要有一個(gè)關(guān)聯(lián)參照表主鍵的字段. 參照表: @Entity public class Idcard{ @Id @GeneratedValue private Integer iid; private String idnum; @OneToOne(mappedBy="sid") //外鍵表的主鍵名 private Student stu; } 外鍵表: @Entity public class Student{ @Id private Integer sid; private String name; @OneToOne @joinColumn(name="sid") private Idcard idcard; }查看全部
舉報(bào)
0/150
提交
取消