關于@Entity和@Table注解的用法詳解
@Entity和@Table注解的用法
@Entity注解
@Entity注解和@Table注解都是Java Persistence API中定義的一種注解。
@Entity說明這個class是實體類,并且使用默認的orm規(guī)則,即class名就是數(shù)據庫表中表明,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注解表示該類是要給實體類,在羨慕啟動時會根據該類自動生成一張表,表的名稱即@Entity注解中name的值,如果不配置name,默認表明為類名
- 所有的實體類都要有主鍵,@Id注解表示該屬性是一個主鍵,@GeneratedValue注解表示注解自動生成,strategy則表示主鍵的生成策略
- 默認情況下,生成的表中字段的名稱就是實體類中屬性的名稱,通過@Column注解可以定制生成的字段屬性,name表示該屬性對應的數(shù)據表中字段的名稱,nullable表示該字段非空
- @Transient注解表示在生成數(shù)據庫中的表時,該屬性被忽略,即不生成對應的字段
@Table注解
@Table注解默認情況下只會完成表和實體之間的映射,聲明才對象映射到數(shù)據庫的數(shù)據表,通過它可以為實體指定表(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ù)據庫表,其中@Table.name()用來指定映射表的表名。
如果同時使用了@Entity(name="student")和@Table(name="book"),最終對應的表名是book,這說明優(yōu)先級:@Table>@Entity
@Entity和@Table的區(qū)別
Java Persistence API定義了一種定義,可以將常規(guī)的普通Java對象(有時被稱作POJO)映射到數(shù)據庫。這些普通Java對象被稱作Entity Bean。除了是用Java Persistence元數(shù)據將其映射到數(shù)據庫外,Entity Bean與其他Java類沒有任何區(qū)別。
事實上,創(chuàng)建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數(shù)據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態(tài)和數(shù)據庫同步。
@Entity和@Table的區(qū)別:
@Entity說明這個class是實體類,并且使用默認的orm規(guī)則,即class名即數(shù)據庫表中表名,class字段名即表中的字段名
如果想改變這種默認的orm規(guī)則,就要使用@Table來改變class名與數(shù)據庫中表名的映射規(guī)則,@Column來改變class中字段名與db中表的字段名的映射規(guī)則
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java web開發(fā)之購物車功能實現(xiàn)示例代碼
這篇文章主要介紹了java web開發(fā)之購物車功能實現(xiàn)示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10MyBatis動態(tài)SQL之<choose><when><otherwise>標簽的使用
MyBatis中動態(tài)語句choose-when-otherwise 類似于Java中的switch-case-default語句,本文就來介紹一下MyBatis動態(tài)SQL之<choose><when><otherwise>標簽的使用,感興趣的可以了解一下2023-09-09淺談SpringBoot項目如何讓前端開發(fā)提高效率(小技巧)
這篇文章主要介紹了淺談SpringBoot項目如何讓前端開發(fā)提高效率(小技巧),主要介紹了Swagger和Nginx提高效率的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04SpringBoot+Mybatis plus實現(xiàn)多數(shù)據源整合的實踐
本文主要介紹了SpringBoot+Mybatis plus實現(xiàn)多數(shù)據源整合的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10SpringBoot用配置影響B(tài)ean加載@ConditionalOnProperty
這篇文章主要為大家介紹了SpringBoot用配置影響B(tài)ean加載@ConditionalOnProperty示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04一天時間用Java寫了個飛機大戰(zhàn)游戲,朋友直呼高手
前兩天我發(fā)現(xiàn)論壇有兩篇飛機大戰(zhàn)的文章異?;鸨?但都是python寫的,竟然不是我大Java,說實話作為老java選手,我心里是有那么一些失落的,難道我大java打飛機不行?今天特地整理了這篇文章,需要的朋友可以參考下2021-05-05