<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Aaronlong31

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      12 Posts :: 3 Stories :: 17 Comments :: 0 Trackbacks
    轉自:http://blog.csdn.net/eastlift/archive/2008/05/20/2463243.aspx

    1
    @Entity(name="EntityName")
    必須,name為可選,對應數據庫中一的個表

    2
    @Table(name="",catalog="",schema="")
    可選,通常和@Entity配合使用,只能標注在實體的class定義處,表示實體對應的數據庫表的信息
    name:
    可選,表示表的名稱.默認地,表名和實體名稱一致,只有在不一致的情況下才需要指定表名
    catalog:
    可選,表示Catalog名稱,默認為Catalog("").
    schema:
    可選,表示Schema名稱,默認為Schema("").

    3
    @id
    必須
    @id
    定義了映射到數據庫表的主鍵的屬性,一個實體只能有一個屬性被映射為主鍵.置于getXxxx().

    4
    @GeneratedValue(strategy=GenerationType,generator="")
    可選
    strategy:
    表示主鍵生成策略,AUTO,INDENTITY,SEQUENCE TABLE 4,分別表示讓ORM框架自動選擇,
    根據數據庫的Identity字段生成,根據數據庫表的Sequence字段生成,以有根據一個額外的表生成主鍵,默認為AUTO
    generator:
    表示主鍵生成器的名稱,這個屬性通常和ORM框架相關,例如,Hibernate可以指定uuid等主鍵生成方式.
    示例:
    1@Id 
    2@GeneratedValue(strategy=StrategyType.SEQUENCE) 
    3public int getPk() 
    4    return pk; 
    5}

    6
    5@Basic(fetch=FetchType,optional=true)
    可選
    @Basic
    表示一個簡單的屬性到數據庫表的字段的映射,對于沒有任何標注的getXxxx()方法,默認即為@Basic
    fetch:
    表示該屬性的讀取策略,EAGERLAZY兩種,分別表示主支抓取和延遲加載,默認為EAGER.
    optional:
    表示該屬性是否允許為null,默認為true
    示例:
    1 @Basic(optional=false
    2     public String getAddress() 
    3       return address; 
    4     }

    5
    6@Column
    可選
    @Column
    描述了數據庫表中該字段的詳細定義,這對于根據JPA注解生成數據庫表結構的工具非常有作用.
    name:
    表示數據庫表中該字段的名稱,默認情形屬性名稱一致
    nullable:
    表示該字段是否允許為null,默認為true
    unique:
    表示該字段是否是唯一標識,默認為false
    length:
    表示該字段的大小,僅對String類型的字段有效
    insertable:
    表示在ORM框架執行插入操作時,該字段是否應出現INSETRT語句中,默認為true
    updateable:
    表示在ORM框架執行更新操作時,該字段是否應該出現在UPDATE語句中,默認為true.對于一經創建就不可以更改的字段,該屬性非常有用,如對于birthday字段.
    columnDefinition:
    表示該字段在數據庫中的實際類型.通常ORM框架可以根據屬性類型自動判斷數據庫中字段的類型,但是對于Date類型仍無法確定數據庫中字段類型究竟是 DATE,TIME還是TIMESTAMP.此外,String的默認映射類型為VARCHAR,如果要將String類型映射到特定數據庫的BLOB TEXT字段類型,該屬性非常有用.
    示例:
    @Column(name="BIRTH",nullable="false",columnDefinition="DATE"
         
    public String getBithday() 
           
    return birthday; 
         }

    7@Transient
    可選
    @Transient
    表示該屬性并非一個到數據庫表的字段的映射,ORM框架將忽略該屬性.
    如果一個屬性并非數據庫表的字段映射,就務必將其標示為@Transient,否則,ORM框架默認其注解為@Basic
    示例:
    //根據birth計算出age屬性 
         @Transient 
         
    public int getAge() 
           
    return getYear(new Date()) - getYear(birth); 
         }

    8@ManyToOne(fetch=FetchType,cascade=CascadeType)
    可選
    @ManyToOne
    表示一個多對一的映射,該注解標注的屬性通常是數據庫表的外鍵
    optional:
    是否允許該字段為null,該屬性應該根據數據庫表的外鍵約束來確定,默認為true
    fetch:
    表示抓取策略,默認為FetchType.EAGER
    cascade:
    表示默認的級聯操作策略,可以指定為ALL,PERSIST,MERGE,REFRESHREMOVE中的若干組合,默認為無級聯操作
    targetEntity:
    表示該屬性關聯的實體類型.該屬性通常不必指定,ORM框架根據屬性類型自動判斷targetEntity.
    示例:
    //訂單Order和用戶User是一個ManyToOne的關系 
         
    //在Order類中定義 
         @ManyToOne() 
         @JoinColumn(name
    ="USER"
         
    public User getUser() 
           
    return user; 
         }

    9@JoinColumn
    可選
    @JoinColumn
    @Column類似,介量描述的不是一個簡單字段,而一一個關聯字段,例如.描述一個@ManyToOne的字段.
    name:
    該字段的名稱.由于@JoinColumn描述的是一個關聯字段,ManyToOne,則默認的名稱由其關聯的實體決定.
    例如,實體Order有一個user屬性來關聯實體User,Orderuser屬性為一個外鍵,
    其默認的名稱為實體User的名稱+下劃線+實體User的主鍵名稱
    示例:
        
    @ManyToOne

    10
    @OneToMany(fetch=FetchType,cascade=CascadeType)
    可選
    @OneToMany
    描述一個一對多的關聯,該屬性應該為集體類型,在數據庫中并沒有實際字段.
    fetch:
    表示抓取策略,默認為FetchType.LAZY,因為關聯的多個對象通常不必從數據庫預先讀取到內存
    cascade:
    表示級聯操作策略,對于OneToMany類型的關聯非常重要,通常該實體更新或刪除時,其關聯的實體也應當被更新或刪除
    例如:實體UserOrderOneToMany的關系,則實體User被刪除時,其關聯的實體Order也應該被全部刪除
    示例:
    @OneToMany(cascade=ALL) 
         
    public List getOrders() 
           
    return orders; 
         }

    11@OneToOne(fetch=FetchType,cascade=CascadeType)
    可選
    @OneToOne
    描述一個一對一的關聯
    fetch:
    表示抓取策略,默認為FetchType.LAZY
    cascade:
    表示級聯操作策略
    示例:
    @OneToOne(fetch=FetchType.LAZY) 
         
    public Blog getBlog() 
           
    return blog; 
         }
     
     

    12@ManyToMany
    可選
    @ManyToMany
    描述一個多對多的關聯.多對多關聯上是兩個一對多關聯,但是在ManyToMany描述中,中間表是由ORM框架自動處理
    targetEntity:
    表示多對多關聯的另一個實體類的全名,例如:package.Book.class
    mappedBy:
    表示多對多關聯的另一個實體類的對應集合屬性名稱
    示例:
         User
    實體表示用戶,Book實體表示書籍,為了描述用戶收藏的書籍,可以在UserBook之間建立ManyToMany關聯 
        

     1@Entity 
     2     public class User 
     3       private List books; 
     4       @ManyToMany(targetEntity=package.Book.class
     5       public List getBooks() 
     6           return books; 
     7       }
     
     8       public void setBooks(List books) 
     9           this.books=books; 
    10       }
     
    11     }
     
    12
    13     @Entity 
    14     public class Book 
    15       private List users; 
    16       @ManyToMany(targetEntity=package.Users.class, mappedBy="books"
    17       public List getUsers() 
    18           return users; 
    19       }
     
    20       public void setUsers(List users) 
    21           this.users=users; 
    22       }
     
    23     }
     
    24

    兩個實體間相互關聯的屬性必須標記為@ManyToMany,并相互指定targetEntity屬性,
    需要注意的是,有且只有一個實體的@ManyToMany注解需要指定mappedBy屬性,指向targetEntity的集合屬性名稱
    利用ORM工具自動生成的表除了UserBook表外,還自動生成了一個User_Book,用于實現多對多關聯

    13
    @MappedSuperclass
    可選
    @MappedSuperclass
    可以將超類的JPA注解傳遞給子類,使子類能夠繼承超類的JPA注解
    示例
        

     1@MappedSuperclass 
     2     public class Employee() 
     3       
     4     }
     
     5
     6     @Entity 
     7     public class Engineer extends Employee 
     8       .. 
     9     }
     
    10     @Entity 
    11     public class Manager extends Employee 
    12       .. 
    13     }
     
    14


    14@Embedded
    可選
    @Embedded
    將幾個字段組合成一個類,并作為整個Entity的一個屬性.
    例如User包括id,name,city,street,zip屬性.
    我們希望city,street,zip屬性映射為Address對象.這樣,User對象將具有id,nameaddress這三個屬性.
    Address
    對象必須定義為@Embededable
    示例
        

     1@Embeddable 
     2     public class Address {city,street,zip} 
     3     @Entity 
     4     public class User 
     5       @Embedded 
     6       public Address getAddress() 
     7           
     8       }
     
     9     }
     
    10


    Hibernate驗證注解

    注解

    適用類型

    說明

    示例

    @Pattern

    String

    通過正則表達式來驗證字符串

    @attern(regex=”[a-z]{6}”)

    @Length

    String

    驗證字符串的長度

    @length(min=3,max=20)

    @Email

    String

    驗證一個Email地址是否有效

    @email

    @Range

    Long

    驗證一個整型是否在有效的范圍內

    @Range(min=0,max=100)

    @Min

    Long

    驗證一個整型必須不小于指定值

    @Min(value=10)

    @Max

    Long

    驗證一個整型必須不大于指定值

    @Max(value=20)

    @Size

    集合或數組

    集合或數組的大小是否在指定范圍內

    @Size(min=1,max=255)

    以上每個注解都可能性有一個message屬性,用于在驗證失敗后向用戶返回的消息,還可以三個屬性上使用多個注解 <!--v:3.2-->

    posted on 2010-01-26 09:07 Aaronlong31 閱讀(607) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧洲尹人香蕉综合| 国产色爽免费视频| 91高清免费国产自产| 四虎国产精品免费永久在线| 久久一区二区三区免费| 一个人免费观看www视频| 国产精品玖玖美女张开腿让男人桶爽免费看| 另类小说亚洲色图| 永久免费精品影视网站| 国产精品免费久久| 黄色片免费在线观看| 久9这里精品免费视频| 4虎1515hh永久免费| 91久久青青草原线免费| 无码国产精品一区二区免费虚拟VR| 国产免费久久精品99re丫y| 无人在线观看免费高清视频| 在线观看免费为成年视频| 国产性生交xxxxx免费| 夜色阁亚洲一区二区三区| 伊人亚洲综合青草青草久热| 久久久亚洲欧洲日产国码农村| 亚洲自偷自拍另类图片二区| 中文字幕亚洲男人的天堂网络| 亚洲av无码成人精品区一本二本| 日韩免费高清一级毛片| 99在线视频免费观看| 久久久久久毛片免费播放| 男人的好免费观看在线视频| 日韩精品视频免费观看| 亚洲毛片av日韩av无码| 久久亚洲国产成人亚| 精品亚洲AV无码一区二区三区| 亚洲 日韩 色 图网站| 精品女同一区二区三区免费播放| 岛国岛国免费V片在线观看| 91精品免费不卡在线观看| 成年丰满熟妇午夜免费视频| 亚洲成a人片在线播放| 亚洲精品国产成人专区| 亚洲偷偷自拍高清|