學習Spring-Data-Jpa(二)---JPA基本注解


基本注解

  1、@Entity :用於添加在實體類上,定義該JAVA類成為被JPA管理的實體,將映射到指定的數據庫表。如定義一個實體類Category,它將映射到數據庫中的category表中。

  2、@Id :定義屬性為數據庫表中的主鍵列,一個實體里面必須有一個。

  3、@Table:指定數據庫的表名,與@Entity一同使用。

      屬性name:表的名字,如果不寫,系統認為和實體類一致。

      屬性catalog,schema用於設置目錄和此表所在schema,一般不需要填寫;

      屬性uniqueConstraints,唯一性約束,只有創建表的時候有用,默認不需要;

      屬性indexes,索引,只有創建表的時候有用,默認不需要。

  4、@Basic:表示屬性是到數據庫表字段的映射。如果實體的字段上沒有任何注解,默認即為@Basic;

      屬性fetch,抓取方式,默認FetchType.EAGER(立即加載),FetchType.LAZY(延遲加載,主要應用在大字段上面);

      屬性optional,設置這個字段是否可以為null,默認是true。

  5、@Transient:非持久化屬性,表示該屬性並非是一個到數據庫表的字段的映射,與@Basic作用相反。JPA映射數據庫的時候忽略它。

  6、@Column:定義該屬性對應數據庫中的列名。

      屬性name,數據庫中的列名。如果不寫默認和實體屬性名一致;

      屬性unique,是否唯一。默認false;

      屬性nullable,是否允許為空。默認為true;

      屬性insertable,執行insert操作的時候是否包含此字段,默認為true;

      屬性updatable,執行updatable操作的時候是否包含此字段,默認為true;

      屬性columnDefinition,表示該字段在數據庫中的實際類型。

      屬性length,數據庫字段的長度,默認255;

      屬性table,precision,scale,我沒用到過,一般不設置。

  7、@GeneratedValue:主鍵生成策略。

      屬性strategy,id的生成策略,GenerationType.TABLE,通過表產生主鍵,框架由表模擬序列產生主鍵,使用該策略可以使應用更易於數據庫移植;GenerationType.SEQUENCE,通過序列產生主鍵,通過@SequenceGenerator注解指定序列名,MySql不支持這種方式;GenerationType.IDENTITY,數據庫id自增長,多用於MySql;GenerationType.AUTO,JPA自動選擇合適的策略,默認選項。

      屬性generator:通過Sequence生成id,常見Orcale數據庫id生成,需要配合@SequenceGenerator使用。

  8、@Temporal:用來設置Date類型的屬性映射到對應精度的字段。TemporalType.DATE,映射為數據庫date,TemporalType.TIME映射為數據庫time,TemporalType.TIMESTAMP,映射為datetime。(jdk8的話,可以使用新的時間類來替代Date)

  9、@Enumerated:映射枚舉字段。屬性value,默認是EnumType.ORDINAL(枚舉字段的下標),EnumType.STRING枚舉字段的Name;應用如下

        

 

  10、@Lob,將屬性字段映射成數據庫支持的大對象類型,支持一下兩種數據庫類型的字段。

      Clob(Character Large Objects)類型是長字符串類型,java.sql.Clob、Character[]、char[]和String將被映射成Clob類型。

      Blob(Binary Large Objects)類型是字節類型,java.sql.Blob、Byte[]、byte[]和實現了Serializable接口的類型將被映射為Blob類型。

      由於Clob、Blob占用內存空間較大,一般配合@Basic(fetch=FetchType.LAZY)將其設置為延遲加載。

  11、@IdClass:利用外部類的聯合主鍵。

      外部類要符合一下幾點:必須實現java.io.Serializable接口;必須有默認的無參構造函數;必須覆蓋equals和hashCode方法。    

          

      實體類要,在類上添加@IdClass並指定外部主鍵類,每個主鍵上都要添加@Id注解。

          

      Repository接口要把主鍵改為外部主鍵類。

          

 

       使用如下

      

 源碼地址:https://github.com/caofanqi/study-spring-data-jpa

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM