声明属性Hibernate的Annotation注解
工作之余抽點(diǎn)時(shí)間出來寫寫博文,希望對(duì)新接觸的朋友有幫助。今天在這里和大家一起學(xué)習(xí)一下聲明屬性
????? ? ? ? 當(dāng)項(xiàng)目變得比較大的時(shí)候,如何還應(yīng)用hbm.xml文件來配置Hibernate實(shí)體就會(huì)變得比較復(fù)雜。這里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件變得很便利管理了。
????? ? ? ??這里簡(jiǎn)略分析Hibernate的Annotation注解
????? ? ? ??一、聲明實(shí)體
????? ? ? ??@Entity
??????? ? ? ? ??對(duì)實(shí)體注釋。任何Hibernate映射對(duì)象都要有這個(gè)注釋
????? ? ? ??@Table
????? ? ? ? ? ?聲明此對(duì)象映射到數(shù)據(jù)庫(kù)的數(shù)據(jù)表,通過它可認(rèn)為實(shí)體指定表(talbe),目錄(Catalog)和schema的名字。該注釋不是必須的,如果沒有則系統(tǒng)應(yīng)用默認(rèn)值(實(shí)體的短類名)。
???????????? @Version
????? ? ? ? ? ? ?該注釋可用于在實(shí)體Bean中添加樂觀鎖支持。
?????
????? ? ? ??二、聲明主鍵
????? ? ? ??@Id
????? ? ? ? ? ?聲明此屬性為主鍵。該屬性值可以通過應(yīng)該自身創(chuàng)立,但是Hibernate推薦通過Hibernate生成
????? ? ? ??@GeneratedValue
????? ? ? ? ? ?指定主鍵的生成策略。有如下四個(gè)值
????? ? ? ? ? ? ? ?TABLE:應(yīng)用表保存id值
????? ? ? ? ? ? ? ?IDENTITY:identitycolumn
????? ? ? ? ? ? ? ?SEQUENCR :sequence
????? ? ? ? ? ? ? ?AUTO:根據(jù)數(shù)據(jù)庫(kù)的不同應(yīng)用上面三個(gè)
????????????
????? ? ? ??三、聲明普通屬性
????? ? ? ??@Column
????? ? ? ? ? ?聲明該屬性與數(shù)據(jù)庫(kù)字段的映射關(guān)系。
@Column(nam=”category_name” length=20) Public void getCategoryName(){Return this.categoryName; }????? ? ? ??注意:
????? ? ? ? ??1、? 當(dāng)POJO有屬性不需要映射的時(shí)候一定要用@Transitent修飾,該注釋表示此屬性與表沒有映射關(guān)系,只是一個(gè)臨時(shí)的屬性。
????? ? ? ? ??2、? @Lob注釋表示該屬性速?zèng)Q化為Blob或者Clob類型,詳細(xì)取決于屬性的類型。
?
????? ? ? ??四、聲明關(guān)聯(lián)關(guān)系
????? ? ? ??一對(duì)多關(guān)聯(lián)關(guān)系
????? ? ? ??@OneToMany(mappedBy=” person”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
????? ? ? ?? 一對(duì)多聲明
????? ? ? ??@ManyToOne(cascade=CascadeType.REFRESH,)
????? ? ? ??@JoinColumn
????? ? ? ?? 多對(duì)一聲明?,聲明為雙向關(guān)聯(lián)
????
????一對(duì)一關(guān)聯(lián)關(guā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)
有些冷,有些涼,心中有些無奈,我一個(gè)人走在黑夜中,有些顫抖,身體瑟縮著,新也在抖動(dòng)著,我看不清前方的路,何去何從,感覺迷茫,胸口有些悶,我環(huán)視了一下周圍,無人的街頭顯得冷清,感到整個(gè)世界都要將我放棄。腳步彷徨之間,淚早已滴下……
????
????多對(duì)多關(guān)聯(lián)關(guā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”)})
????
????? ? ? ??實(shí)例:
????? ? ? ??有如下兩個(gè)實(shí)體,商品:Goods,分類Category。兩者是多對(duì)一的關(guān)聯(lián)關(guān)系。
????? ? ? ??應(yīng)用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() {}/** 主鍵* 生成策略為自動(dòng)增加* 獨(dú)一、長(zhǎng)度為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;}/** 多對(duì)一關(guān)聯(lián)關(guān)系* 延遲加載: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
????
????
文章結(jié)束給大家分享下程序員的一些笑話語(yǔ)錄: Google事件并不像國(guó)內(nèi)主流媒體普遍誤導(dǎo)的那樣,它僅僅是中國(guó)Z府和美國(guó)公司、中國(guó)文化和美國(guó)文化甚至中國(guó)人和美國(guó)人之間的關(guān)系,是民族主義和帝國(guó)主義之間的關(guān)系;更重要的是,它就是Z府和公司之間的關(guān)系,是權(quán)力管制和市場(chǎng)自由之間的關(guān)系。從這個(gè)意義上說,過度管制下的受害者,主要是國(guó)內(nèi)的企業(yè)。Google可以抽身而去,國(guó)內(nèi)的企業(yè)只能祈望特區(qū)。www.ishuo.cn
轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/archive/2013/05/19/3087211.html
總結(jié)
以上是生活随笔為你收集整理的声明属性Hibernate的Annotation注解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ftrace使用说明(二)
- 下一篇: C语言键盘扫描码