声明属性Hibernate的Annotation注解
工作之余抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這里和大家一起學習一下聲明屬性
????? ? ? ? 當項目變得比較大的時候,如何還應用hbm.xml文件來配置Hibernate實體就會變得比較復雜。這里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件變得很便利管理了。
????? ? ? ??這里簡略分析Hibernate的Annotation注解
????? ? ? ??一、聲明實體
????? ? ? ??@Entity
??????? ? ? ? ??對實體注釋。任何Hibernate映射對象都要有這個注釋
????? ? ? ??@Table
????? ? ? ? ? ?聲明此對象映射到數據庫的數據表,通過它可認為實體指定表(talbe),目錄(Catalog)和schema的名字。該注釋不是必須的,如果沒有則系統應用默認值(實體的短類名)。
???????????? @Version
????? ? ? ? ? ? ?該注釋可用于在實體Bean中添加樂觀鎖支持。
?????
????? ? ? ??二、聲明主鍵
????? ? ? ??@Id
????? ? ? ? ? ?聲明此屬性為主鍵。該屬性值可以通過應該自身創立,但是Hibernate推薦通過Hibernate生成
????? ? ? ??@GeneratedValue
????? ? ? ? ? ?指定主鍵的生成策略。有如下四個值
????? ? ? ? ? ? ? ?TABLE:應用表保存id值
????? ? ? ? ? ? ? ?IDENTITY:identitycolumn
????? ? ? ? ? ? ? ?SEQUENCR :sequence
????? ? ? ? ? ? ? ?AUTO:根據數據庫的不同應用上面三個
????????????
????? ? ? ??三、聲明普通屬性
????? ? ? ??@Column
????? ? ? ? ? ?聲明該屬性與數據庫字段的映射關系。
@Column(nam=”category_name” length=20) Public void getCategoryName(){Return this.categoryName; }????? ? ? ??注意:
????? ? ? ? ??1、? 當POJO有屬性不需要映射的時候一定要用@Transitent修飾,該注釋表示此屬性與表沒有映射關系,只是一個臨時的屬性。
????? ? ? ? ??2、? @Lob注釋表示該屬性速決化為Blob或者Clob類型,詳細取決于屬性的類型。
?
????? ? ? ??四、聲明關聯關系
????? ? ? ??一對多關聯關系
????? ? ? ??@OneToMany(mappedBy=” person”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
????? ? ? ?? 一對多聲明
????? ? ? ??@ManyToOne(cascade=CascadeType.REFRESH,)
????? ? ? ??@JoinColumn
????? ? ? ?? 多對一聲明?,聲明為雙向關聯
????
????一對一關聯關系
????? ? ? ??@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”)})
????
????? ? ? ??實例:
????? ? ? ??有如下兩個實體,商品:Goods,分類Category。兩者是多對一的關聯關系。
????? ? ? ??應用Hibernate Annotation注解如下
????Goods.java
@Entity @Table(name = "goods", catalog = "test") public class Goods implements java.io.Serializable {private static final long serialVersionUID = 1L;private String goodsId;private Category category;private String goodsName;public Goods() {}/** 主鍵* 生成策略為自動增加* 獨一、長度為20*/@Id@GeneratedValue@Column(name = "goods_id", unique = true, nullable = false, length = 20)public String getGoodsId() {return this.goodsId;}public void setGoodsId(String goodsId) {this.goodsId = goodsId;}/** 多對一關聯關系* 延遲加載:fetch = FetchType.LAZY* 引用外鍵:category_id* */@ManyToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL)@JoinColumn(name = "category_id")public Category getCategory() {return this.category;}public void setCategory(Category category) {this.category = category;}@Column(name = "goods_name", nullable = false, length = 50)public String getGoodsName() {return this.goodsName;}public void setGoodsName(String goodsName) {this.goodsName = goodsName;}}????
????Category.java
????
????
文章結束給大家分享下程序員的一些笑話語錄: Google事件并不像國內主流媒體普遍誤導的那樣,它僅僅是中國Z府和美國公司、中國文化和美國文化甚至中國人和美國人之間的關系,是民族主義和帝國主義之間的關系;更重要的是,它就是Z府和公司之間的關系,是權力管制和市場自由之間的關系。從這個意義上說,過度管制下的受害者,主要是國內的企業。Google可以抽身而去,國內的企業只能祈望特區。www.ishuo.cn
轉載于:https://www.cnblogs.com/jiangu66/archive/2013/05/19/3087211.html
總結
以上是生活随笔為你收集整理的声明属性Hibernate的Annotation注解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ftrace使用说明(二)
- 下一篇: C语言键盘扫描码