SpringDataJPA筆記(11)-Transient註解

SpringDataJPA筆記(11)-Transient註解

在 JAVA種,只要該類實現了Serilizable接口,然後在不需要序列化的屬性前添加關鍵字transient,則序列化對象的時候會忽略transient修飾的屬性

我們在定義實體類的時候,有一些屬性我們不需要持久化到數據庫,這種時候我們就可以使用Transient註解,用於標註該字段不需要添加到數據庫表,而且即使實體類沒有實現Serilizable接口,也會忽略該屬性

例如如下一個實體類

@Data
@Entity
@Table(name = "transient_tb")
public class TransientEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Transient
    private String trrr;
}

在實際數據庫中查看該表的字段,依然沒有該trrr字段

CREATE TABLE transient_tb (
id bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

但是我們通常要求實體類還是要實現Serilizable接口,因爲這樣可以讓實體類序列化和反序列化,通過流的方式被傳遞

通常在使用Transient註解的時候,會發現有兩個包同時有這個註解,在不同的情況下需要引入的是不同的包註解

在這裏插入圖片描述

在使用MySQL的時候需要引入的是

import javax.persistence.Transient;

在使用MongoDB的時候需要引入是

import org.springframework.data.annotation.Transient;

這點需要注意一下 不要引入了錯誤的包,從而達不到想要的效果

這是因爲

javax.persistence.Transient 是標準JPA的註解,並不適用與MongoDB,而org.springframework.data.annotation.Transient是spring的註解,這個纔對MongoDB有效

https://docs.spring.io/spring-data/data-document/docs/current/reference/html/#mapping-usage-annotations

歡迎關注微信交流
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章