關(guān)于@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表示該屬性對應(yīng)的數(shù)據(jù)表中字段的名稱,nullable表示該字段非空
- @Transient注解表示在生成數(shù)據(jù)庫中的表時,該屬性被忽略,即不生成對應(yīng)的字段
@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"),最終對應(yīng)的表名是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ù)庫中刪除對應(yīng)記錄,修改一個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ī)則
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
為Java應(yīng)用創(chuàng)建Docker鏡像的3種方式總結(jié)
Docker的使用可以將應(yīng)用程序做成鏡像,這樣可以將鏡像發(fā)布到私有或者公有倉庫中,在其他主機上也可以pull鏡像,并且運行容器,運行程,下面這篇文章主要給大家總結(jié)介紹了關(guān)于為Java應(yīng)用創(chuàng)建Docker鏡像的3種方式,需要的朋友可以參考下2023-06-06
解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題
這篇文章主要介紹了解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
如何使用會話Cookie和Java實現(xiàn)JWT身份驗證
這篇文章主要介紹了如何使用會話Cookie和Java實現(xiàn)JWT身份驗證,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-03-03
Java打印出所有的水仙花數(shù)的實現(xiàn)代碼
這篇文章主要介紹了Java打印出所有的水仙花數(shù)的實現(xiàn)代碼,需要的朋友可以參考下2017-02-02
Spring?Boot中的JdbcClient與JdbcTemplate使用對比分析
這篇文章主要介紹了Spring Boot中的JdbcClient與JdbcTemplate使用對比分析,一起看看Spring Boot 中 JdbcClient 和 JdbcTemplate 之間的差異2024-01-01

