duansky'weblog

          統計

          留言簿(3)

          友情鏈接

          閱讀排行榜

          評論排行榜

          Hibernate annotation 使用筆記

          ?1 @Entity????????????????????????? -- 聲明為一個實體bean???
          ?2 @Table(name = " promotion_info " )??? -- 為實體bean映射指定表(表名 = " promotion_info)???
          ?3 @Id????????????????????????????? -- 聲明了該實體bean的標識屬性???
          ?4 @GeneratedValue????????????????? -- 可以定義標識字段的生成策略.???
          ?5 @Transient?????????????????????? -- 將忽略這些字段和屬性,不用持久化到數據庫???
          ?6 @Column(name = " promotion_remark " ) -- 聲明列(字段名 = " promotion_total " )?屬性還包括(length = 200等)???
          ?7 @Temporal(TemporalType.TIMESTAMP) -- 聲明時間格式???
          ?8 @Enumerated????????????????????? -- 聲明枚舉???
          ?9 @Version???????????????????????? -- 聲明添加對樂觀鎖定的支持???
          10 @OneToOne??????????????????????? -- 可以建立實體bean之間的一對一的關聯???
          11 @OneToMany?????????????????????? -- 可以建立實體bean之間的一對多的關聯???
          12 @ManyToOne?????????????????????? -- 可以建立實體bean之間的多對一的關聯???
          13 @ManyToMany????????????????????? -- 可以建立實體bean之間的多對多的關聯???
          14 @Formula???????????????????????? -- 一個SQL表達式,這種屬性是只讀的,不在數據庫生成屬性(可以使用sum、average、max等)???
          15 @OrderBy???????????????????????? -- Many端某個字段排序(List)??
          16

          以上是基本常用注解,下面是例子說明

          ??1@Entity??
          ??2@Table(name="promotion_info")???
          ??3public?class?Promotion?implements?Serializable?{???
          ??4??
          ??5????//AUTO--可以是identity類型的字段,或者sequence類型或者table類型,取決于不同的底層數據庫???
          ??6????@Id????
          ??7????@GeneratedValue(strategy?=?GenerationType.AUTO)???
          ??8????//對于oracle想使用各自的Sequence:???
          ??9????//@GeneratedValue(strategy?=?GenerationType.AUTO,generator="PROMOTION_SEQ")???
          ?10????//@SequenceGenerator(name="PROMOTION_SEQ",sequenceName="PROMOTION_SEQ")???
          ?11????private?Long?id;???
          ?12??
          ?13????@Column(name="group_start_amount")???
          ?14????private?Integer?groupStartAmount=0;???
          ?15???????
          ?16????@Column(name="promotion_remark",length=200)???
          ?17????//@Lob?如果是文章內容可以使用?只需要把length=200去掉就可以了???
          ?18????private?String?remark;???
          ?19????//DATE??????-?java.sql.Date???
          ?20????//TIME??????-?java.sql.Time???
          ?21????//TIMESTAMP?-?java.sql.Timestamp???
          ?22????@Temporal(TemporalType.TIMESTAMP)???
          ?23????@Column(name="start_time")???
          ?24????private?Date?startTime;???
          ?25??
          ?26????//顯示0?隱藏1???
          ?27????public?static?enum?DisplayType?{???
          ?28????????顯示,隱藏???
          ?29????}
          ???
          ?30????@Enumerated(value?=?EnumType.ORDINAL)//ORDINAL序數???
          ?31????private?DisplayType?displayType?=?DisplayType.顯示;???
          ?32??
          ?33????@Version??
          ?34????private?Integer?version;???
          ?35??
          ?36????//CascadeType.PERSIST???--?觸發級聯創建(create)???
          ?37????//CascadeType.MERGE?????--?觸發級聯合并(update)???
          ?38????//FetchType.LAZY????????--?延遲加載???
          ?39????@ManyToOne(cascade?=?{CascadeType.PERSIST,CascadeType.MERGE},fetch?=?FetchType.LAZY)???
          ?40????private?PromotionGroup?promotionGroup;???
          ?41??
          ?42????//單向ManyToMany???
          ?43????//@JoinTable(關聯的表名)???
          ?44????//joinColumns?--?promotion關聯的列的外鍵???
          ?45????//inverseJoinColumns?--?largess?關聯列的外鍵???
          ?46????@ManyToMany(cascade?=?{CascadeType.PERSIST,CascadeType.MERGE})???
          ?47????@JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="promotion_id")},inverseJoinColumns={@JoinColumn(name="largess_id")})???
          ?48????private?Set<Largess>?largess;????
          ?49???????
          ?50????@OneToMany(mappedBy="promotion",cascade?=?CascadeType.ALL)???
          ?51????@OrderBy("quantity?asc")//item中的列表會根據quantity排序???
          ?52????private?List<PromotionItem>?promotionItem;???
          ?53??
          ?54????//get?set?省略.???
          ?55????@Transient??
          ?56????private?Long?hashcodeValue?=?null;???
          ?57????public?synchronized?int?hashCode()?{???
          ?58????????if(hashcodeValue?=?null)?{???
          ?59????????????if(id?==?null)???
          ?60????????????????hashcodeValue?=?new?Long(super.hashCode());???
          ?61????????????else??
          ?62????????????????hashcodeValue?=?id;???
          ?63????????}
          ???
          ?64????????return?hashcodeValue.intValue();???
          ?65????}
          ???
          ?66??
          ?67????public?boolean?equals(Object?obj)?{???
          ?68????????Promotion?other?=?(Promotion)?obj;???
          ?69????????if(this?==?other)???
          ?70????????????return?true;???
          ?71????????if(this.id?==?null?||?other.id?==?null)???
          ?72????????????return?false;???
          ?73????????return?this.id.equals(other.id);???
          ?74????}
          ???
          ?75??
          ?76}
          ???
          ?77@Entity??
          ?78@Table(name="promotion_group")???
          ?79public?class?PromotionGroup?implements?Serializable?{???
          ?80????@Id????
          ?81????@GeneratedValue(strategy?=?GenerationType.AUTO)???
          ?82????private?Long?id;???
          ?83???????
          ?84????//mappedBy的值"promotionGroup"指向owner(Promotion)端的關聯屬性,并且是雙向關系???
          ?85????@OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)???
          ?86????private?List<Promotion>?promotion;???
          ?87??
          ?88????//get?set?省略.???
          ?89}
          ???
          ?90@Entity??
          ?91@Table(name="largess")???
          ?92public?class?Largess?implements?Serializable?{???
          ?93????@Id????
          ?94????@GeneratedValue(strategy?=?GenerationType.AUTO)???
          ?95????private?Long?id;???
          ?96??
          ?97????//1.sql語句中的字段和表名都應該和數據庫相應,而不是類中的字段,???
          ?98????//若帶有參數如la.id=?id,這個=id才是類中屬性???
          ?99????//2.操作字段一定要用別名???
          100????@Formula(select?max(la.id)?from?largess?as?la)???
          101????private?int?maxId;???
          102??
          103????@Formula(select?COUNT(la.id)?from?largess?la)???
          104????private?int?count;???
          105??
          106????@Transient??
          107????private?String?img???
          108??
          109????//get?set?省略.???
          110}
          ??
          111

          posted on 2010-08-18 17:32 duansky 閱讀(279) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 大方县| 青海省| 丘北县| 濉溪县| 南靖县| 涞源县| 北京市| 陆川县| 曲麻莱县| 屏山县| 河池市| 芦溪县| 蓝山县| 苍南县| 盐池县| 慈利县| 塘沽区| 花垣县| 隆安县| 磐石市| 来凤县| 彭水| 临沭县| 吉隆县| 乌鲁木齐市| 信丰县| 稻城县| 苗栗县| 唐海县| 赣榆县| 德化县| 宁阳县| 来凤县| 当涂县| 饶河县| 宝清县| 图片| 栾川县| 涞水县| 资阳市| 崇明县|