JPA使用指南 javax.persistence的注解配置
?
要注意的是:fetch = FetchType.EAGER這句話在一個(gè)類里面只能出現(xiàn)一次,出現(xiàn)兩次就會(huì)報(bào)錯(cuò)“cannot simultaneously fetch multiple bags”,要把其他的改為fetch = FetchType.LAZY延遲加載就可以了。聽說把List集合改為Set也能解決這個(gè)錯(cuò)誤。?
?
其他要點(diǎn):?
1、@Table(name="T_X")這句話可以不寫,不寫就已類名作為表名?
2、如果想讓兩個(gè)類的屬性生成一個(gè)數(shù)據(jù)表,在一個(gè)類里這樣加入另一個(gè)類即可: @Embedded?
private C c;?
3、如果想要一個(gè)類繼承另一個(gè)類的所有屬性,則在父類里這樣寫:?
@SuppressWarnings("serial")?
@Entity?
@MappedSuperclass?? //增加這一行?
并把父類的所有屬性的private改為protected即可?
4、建議在一對(duì)多關(guān)聯(lián)中在"一"方用延遲加載"多"方可以在HQL中顯式的"迫切左外連接" left join fetch 這樣做Hibernate可以少訪問數(shù)據(jù)庫(kù),也可以用"@BatchSize(size = 5)"來減少訪問數(shù)據(jù)庫(kù)的次數(shù)?
@Id 聲明屬性為主鍵?
@GeneratedValue表示主鍵是自動(dòng)生成策略,一般該注釋和 @Id 一起使用?
@Entity 任何 hibernte 映射對(duì)象都要有次注釋?
@Table(name = “tablename”) 類聲明此對(duì)象映射到哪個(gè)表?
@Column(name = “Name”,nullable=false,length=32) 聲明數(shù)據(jù) 庫(kù)字段和類屬性對(duì)應(yīng)關(guān)系?
@Lob 聲明字段為 Clob 或 Blob 類型
@OneToMany(mappedBy=”order”,cascade = CascadeType.ALL, fetch = FetchType.LAZY)?
?? @OrderBy(value = “id ASC”)?
?? 一對(duì)多聲明,和 ORM 產(chǎn)品聲明類似,一看就明白了。?
?? @ManyToOne(cascade=CascadeType.REFRESH,optional=false)?
?? @JoinColumn(name = “order_id”)?
?? 聲明為雙向關(guān)聯(lián)?
?
@Temporal(value=TemporalType.DATE) 做日期類型轉(zhuǎn)換。?
@OneToOne(optional= true,cascade = CascadeType.ALL, mappedBy = “person”)?
?? 一對(duì)一關(guān)聯(lián)聲明?
?? @OneToOne(optional = false, cascade = CascadeType.REFRESH)?
?? @JoinColumn(name = “Person_ID”, referencedColumnName = “personid”,unique = true)?
?? 聲明為雙向關(guān)聯(lián)?
?
?@ManyToMany(mappedBy= “students”)?
?? 多對(duì)多關(guān)聯(lián)聲明。?
? @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)?
? @JoinTable(name = “Teacher_Student”,?
??? joinColumns = {@JoinColumn(name = “Teacher_ID”, referencedColumnName = “teacherid”)},?
??? inverseJoinColumns = {@JoinColumn(name = “Student_ID”, referencedColumnName =?
??? “studentid”)})?
?? 多對(duì)多關(guān)聯(lián)一般都有個(gè)關(guān)聯(lián)表,是這樣聲明的!?
?
?@Transiten表示此屬性與表沒有映射關(guān)系,是一個(gè)暫時(shí)的屬性?
@Cache(usage= CacheConcurrencyStrategy.READ_WRITE)表示此對(duì)象應(yīng)用緩存?
JPA 與 hibernate關(guān)系
?
1,JPA(Java Persistence API)是Sun官方提出的Java持久化規(guī)范。它為Java開發(fā)人員提供了一種對(duì)象/關(guān)系映射工具來管理Java應(yīng)用中的關(guān)系數(shù)據(jù)。,而Hibernate是它的一種實(shí)現(xiàn)。除了Hibernate,還有EclipseLink(曾經(jīng)的toplink),OpenJPA等可供選擇,所以使用Jpa的一個(gè)好處是,可以更換實(shí)現(xiàn)而不必改動(dòng)太多代碼。2,Hibernate作為JPA的一種實(shí)現(xiàn),jpa的注解已經(jīng)是hibernate的核心,hibernate只提供了一些補(bǔ)充,而不是兩套注解。hibernate對(duì)jpa的支持夠足量,在使用hibernate注解建議使用jpa。
總結(jié)
以上是生活随笔為你收集整理的JPA使用指南 javax.persistence的注解配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git 分支 - 变基
- 下一篇: Redis的搭建和Redis的集群搭建