溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@Entity和@Table注解怎么用

發(fā)布時間:2022-01-15 14:02:49 來源:億速云 閱讀:195 作者:iii 欄目:開發(fā)技術

這篇“@Entity和@Table注解怎么用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“@Entity和@Table注解怎么用”文章吧。

    @Entity和@Table注解的用法

    @Entity注解

    @Entity注解和@Table注解都是Java Persistence API中定義的一種注解。

    @Entity說明這個class是實體類,并且使用默認的orm規(guī)則,即class名就是數(shù)據(jù)庫表中表明,class字段名即表中字段名。@Entity注解指明這是一個實體Bean。

    import lombok.Data; 
    import javax.persistence.*; 
    @Data
    @Entity(name = "t_book")
    public class Book {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        @Column(name = "book_name")
        private String name;
        @Column(name = "book_author")
        private String author;
        private Float price;
        @Transient
        private String description;
    }
    • @Entity注解表示該類是要給實體類,在羨慕啟動時會根據(jù)該類自動生成一張表,表的名稱即@Entity注解中name的值,如果不配置name,默認表明為類名

    • 所有的實體類都要有主鍵,@Id注解表示該屬性是一個主鍵,@GeneratedValue注解表示注解自動生成,strategy則表示主鍵的生成策略

    • 默認情況下,生成的表中字段的名稱就是實體類中屬性的名稱,通過@Column注解可以定制生成的字段屬性,name表示該屬性對應的數(shù)據(jù)表中字段的名稱,nullable表示該字段非空

    • @Transient注解表示在生成數(shù)據(jù)庫中的表時,該屬性被忽略,即不生成對應的字段 

    @Table注解

    @Table注解默認情況下只會完成表和實體之間的映射,聲明才對象映射到數(shù)據(jù)庫的數(shù)據(jù)表,通過它可以為實體指定表(table)

    @Data
    @Table(name="book")
    public class Book{
        @Id
        private Integer id;
        @Column(name="book_name")
        private String name;
        ...
    }
    • 常用屬性:name  指定表

    • @Table(name = "book")

    @Table注解是一個非必須的注解,@Table注解指定了Entity所要映射的數(shù)據(jù)庫表,其中@Table.name()用來指定映射表的表名。

    如果同時使用了@Entity(name="student")和@Table(name="book"),最終對應的表名是book,這說明優(yōu)先級:@Table>@Entity

    @Entity和@Table的區(qū)別

    Java Persistence API定義了一種定義,可以將常規(guī)的普通Java對象(有時被稱作POJO)映射到數(shù)據(jù)庫。這些普通Java對象被稱作Entity Bean。除了是用Java Persistence元數(shù)據(jù)將其映射到數(shù)據(jù)庫外,Entity Bean與其他Java類沒有任何區(qū)別。

    事實上,創(chuàng)建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數(shù)據(jù)庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態(tài)和數(shù)據(jù)庫同步。

    @Entity和@Table的區(qū)別:

    @Entity說明這個class是實體類,并且使用默認的orm規(guī)則,即class名即數(shù)據(jù)庫表中表名,class字段名即表中的字段名

    如果想改變這種默認的orm規(guī)則,就要使用@Table來改變class名與數(shù)據(jù)庫中表名的映射規(guī)則,@Column來改變class中字段名與db中表的字段名的映射規(guī)則

    以上就是關于“@Entity和@Table注解怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

    AI