麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JPA學習(2)注解

2019-11-14 14:56:56
字體:
來源:轉載
供稿:網友

上一篇學習了JPA的helloworld,也初略的使用了一些注解,接下來就細細的了解一下有哪些注解,和這些注解的作用

  JPA的基本注解:

  ①@Entity,@Table,@Id,@GeneratedValue,@Column,@Basic,這些是最基本的注解了
   一:@Entity: 標注用于實體類聲明語句之前,指出該java 類為實體類,將映射到指定的數據庫表。如聲明一個實體類 User,它將映射到數據庫中的 user 表上。如果沒有使用@Table注解的話,那么vo的名稱是什么,那么相應的數據表的名稱也是vo的名稱。
   二:@Table:當實體類與其映射的數據庫表名不同名時需要使用 @Table 標注說明,該標注與 @Entity 標注并列使用,置于實體類聲明語句之前,可寫于單獨語句行,也可與聲明語句同行。 @Table 標注的常用選項是 name,用于指明數據庫的表名 @Table標注還有一個兩個選項 catalog 和 schema 用于設置表所屬的數據庫目錄或                          模式,通常為數據庫名。uniqueConstraints 選項用于設置約束條件,通常不須設置。
     三:@Id 標注用于聲明一個實體類的屬性映射為數據庫的主鍵列。該屬性通常置于屬性聲明語句之前,可與聲明語句同行,也可寫在單獨行上。 @Id標注也可置于屬性的getter方法之前。

   四:@GeneratedValue 用于標注主鍵的生成策略,通過 strategy 屬性指定。默認情況下,JPA 自動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer 對應         identity,MySQL 對應 auto increment。 在 javax.persistence.GenerationType 中定義了以下幾種可供選擇的策略: IDENTITY:采用數據庫 ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式; AUTO: JPA自動選擇合適的策略,是默認選項; SEQUENCE:通過序列產生主鍵,通過 @SequenceGenerator 注解指定序列名,MySql 不支持這種方式 TABLE:通過表產生主鍵,框架借由表模擬序列產生主鍵,使用該策略可以使應用更易于數據庫移植。
   五:@Basic 表示一個簡單的屬性到數據庫表的字段的映射,對于沒有任何標注的 getXxxx() 方法,默認即為@Basic fetch: 表示該屬性的讀取策略,有 EAGER 和 LAZY 兩種, 分別表示主支抓取和延遲加載,默認為 EAGER. optional:表示該屬性是否允許為null, 默認為true

@Transient:

  表示該屬性并非一個到數據庫表的字段的映射,ORM框架將忽略該屬性. 如果一個屬性并非數據庫表的字段映射,就務必將其標示為@Transient,否則,ORM框架默認其注解為    @Basic

@Temporal

  在核心的 Java API 中并沒有定義 Date 類型的精度(temporal PRecision). 而在數據庫中,表示 Date 類型的數據有 DATE, TIME, 和 TIMESTAMP 三種精度(即單純的日期,時間,或者兩者 兼備). 在進行屬性映射時可使用@Temporal注解來調整精度.

@Table這個注解就比較多的內容了
   這個注解的的意思就是說主鍵生成策略是放在一個數據表中,每次使用的時候,就在數據表中查詢,根據自己設置的策略,來生成主鍵。
   我在mysql數據庫中創建了:

  

,數據表,PK_NAME存放的就是我們哪一個表使用的策略,ID_VAL存放的就是主鍵,每次我們創建的記錄的時候,主鍵就是使用ID_VAL作為參照.下面就是我存放的記錄

我現在的注解是:

package com.hotusm.commom.entity;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.TableGenerator;@Table(name="USER")@Entitypublic class User implements Serializable{        /**     *      */    private static final long serialVersionUID = 1L;    private Integer id;    private String name;        private String userDesc;    @TableGenerator(name="GENERATORS",//名稱   需要和@GeneratedValue中的generator值一樣                    table="ID_GENERATOR",//對應我們創建的主鍵策略數據表的表名                    pkColumnName="PK_NAME",//對應創建的主鍵策略數據表存放信息的那個字段,和后面pkColumnValue一起就可以確定一行                    pkColumnValue="ID_USER",//這個字段是PK_NAME的值                    valueColumnName="ID_VAL",//由pkColumnName,pkColumnValue可以確定一行,由這個就可以確定是哪一個字段了                    allocationSize=1,//每次主鍵增長的大小ID_VAL剛開始設置了,那么就不起作用                    initialValue=1//初始化的大小,如果數據表中的            )    @GeneratedValue(strategy=GenerationType.TABLE,generator="GENERATORS")    @Id    public Integer getId() {        return id;    }        public void setId(Integer id) {        this.id = id;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }        @Column(name="user_desc")    public String getDesc() {        return userDesc;    }    public void setDesc(String desc) {        this.userDesc = desc;    }    }

這樣,我們每次創建表的時候,主鍵就能夠根據我們設置的策略進行增長了,但是這種方式不是很常用的,除非是一些特定的業務需求。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧日一级片 | 日韩视频一区 | 久久久久久免费 | 亚洲性生活免费视频 | 国产日韩成人 | 久久久久久中文字幕 | 国产小视频一区 | 男男羞羞视频网站国产 | 91精品国产网站 | 日韩精品久久久久久久电影99爱 | 成人午夜精品 | 精品国产一区二 | 黄色伊人网站 | 一级电影免费在线观看 | 午夜影院在线免费观看 | 麻豆一二区 | 亚洲第一成网站 | 精品成人国产在线观看男人呻吟 | 一级做a爱片久久 | 97超碰资源站 | 亚洲影视中文字幕 | 欧美性受xxxxxx黑人xyx性爽 | 久久成人国产精品入口 | 一区二区三区国产视频 | 午夜视频久久久 | 一级视频网站 | 久久欧美亚洲另类专区91大神 | 一级电影在线观看 | 精品国产一二区 | 国产精品爱久久久久久久 | 91情侣在线偷精品国产 | 成年人国产视频 | 伊人久久国产精品 | 久久一本日日摸夜夜添 | 92看片淫黄大片欧美看国产片 | 久久精品一二三区白丝高潮 | 国产成人综合在线观看 | 色中色激情影院 | 日本成年网 | 久久久入口 | 色视频在线 |