日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JPA使用指南 javax.persistence的注解配置

發布時間:2025/3/21 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JPA使用指南 javax.persistence的注解配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@SuppressWarnings("serial") @Entity @Table(name="T_X") public class X implements Serializable {@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;@Column(length=32)private String name;@Transient //表示此數據不在數據庫表里建立屬性private String temp;@Temporal(TemporalType.TIMESTAMP) //這個是帶時分秒的類型private Date date;@OneToOne(cascade = CascadeType.ALL, mappedBy = "x")private A a; } @SuppressWarnings("serial") @Entity @Table(name="T_A") public class A implements Serializable {@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;@OneToMany(cascade = CascadeType.ALL, mappedBy = "a", fetch = FetchType.EAGER)private List<B> b = new ArrayList<B>();@OneToOne()@JoinColumn(name = "x_Id") //加這句后就會雙方共同維護關系private X x; }@SuppressWarnings("serial") @Entity public class B implements Serializable{@Id@GeneratedValue(strategy = GenerationType.AUTO)protected int id;@ManyToOne()@JoinColumn(name = "a_id")protected A a; }

  

?

要注意的是:fetch = FetchType.EAGER這句話在一個類里面只能出現一次,出現兩次就會報錯“cannot simultaneously fetch multiple bags”,要把其他的改為fetch = FetchType.LAZY延遲加載就可以了。聽說把List集合改為Set也能解決這個錯誤。?

?

其他要點:?
1、@Table(name="T_X")這句話可以不寫,不寫就已類名作為表名?

2、如果想讓兩個類的屬性生成一個數據表,在一個類里這樣加入另一個類即可: @Embedded?
private C c;?


3、如果想要一個類繼承另一個類的所有屬性,則在父類里這樣寫:?
@SuppressWarnings("serial")?
@Entity?
@MappedSuperclass?? //增加這一行?
并把父類的所有屬性的private改為protected即可?


4、建議在一對多關聯中在"一"方用延遲加載"多"方可以在HQL中顯式的"迫切左外連接" left join fetch 這樣做Hibernate可以少訪問數據庫,也可以用"@BatchSize(size = 5)"來減少訪問數據庫的次數?

@Id 聲明屬性為主鍵?

@GeneratedValue表示主鍵是自動生成策略,一般該注釋和 @Id 一起使用?

@Entity 任何 hibernte 映射對象都要有次注釋?

@Table(name = “tablename”) 類聲明此對象映射到哪個表?

@Column(name = “Name”,nullable=false,length=32) 聲明數據 庫字段和類屬性對應關系?

@Lob 聲明字段為 Clob 或 Blob 類型

@OneToMany(mappedBy=”order”,cascade = CascadeType.ALL, fetch = FetchType.LAZY)?
?? @OrderBy(value = “id ASC”)?
?? 一對多聲明,和 ORM 產品聲明類似,一看就明白了。?
?? @ManyToOne(cascade=CascadeType.REFRESH,optional=false)?
?? @JoinColumn(name = “order_id”)?
?? 聲明為雙向關聯?

?

@Temporal(value=TemporalType.DATE) 做日期類型轉換。?

@OneToOne(optional= true,cascade = CascadeType.ALL, mappedBy = “person”)?
?? 一對一關聯聲明?
?? @OneToOne(optional = false, cascade = CascadeType.REFRESH)?
?? @JoinColumn(name = “Person_ID”, referencedColumnName = “personid”,unique = true)?
?? 聲明為雙向關聯?

?

?@ManyToMany(mappedBy= “students”)?
?? 多對多關聯聲明。?
? @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”)})?
?? 多對多關聯一般都有個關聯表,是這樣聲明的!?

?

?@Transiten表示此屬性與表沒有映射關系,是一個暫時的屬性?

@Cache(usage= CacheConcurrencyStrategy.READ_WRITE)表示此對象應用緩存?


JPA 與 hibernate關系

?

1,JPA(Java Persistence API)是Sun官方提出的Java持久化規范。它為Java開發人員提供了一種對象/關系映射工具來管理Java應用中的關系數據。,而Hibernate是它的一種實現。除了Hibernate,還有EclipseLink(曾經的toplink),OpenJPA等可供選擇,所以使用Jpa的一個好處是,可以更換實現而不必改動太多代碼。

2,Hibernate作為JPA的一種實現,jpa的注解已經是hibernate的核心,hibernate只提供了一些補充,而不是兩套注解。hibernate對jpa的支持夠足量,在使用hibernate注解建議使用jpa。

總結

以上是生活随笔為你收集整理的JPA使用指南 javax.persistence的注解配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。