我的資料庫中有一個請求表。這是它的結構

通常我是用手創建物體,但這次我決定從資料庫中生成它。這是我得到的
@Entity
@Table(name = "request")
public class Request
{
@Id
@Column(name = "id", nullable = false)
private Integer id;
@Lob
@Column(name = "body")
private String body;
@Column(name = "description", length = 10000)
private String description;
@Lob
@Column(name = "headers")
private String headers;
@Column(name = "http_method", nullable = false, length = 20)
private String httpMethod;
@Column(name = "name", nullable = false, length = 100)
private String name;
@Lob
@Column(name = "path_variables")
private String pathVariables;
@Column(name = "port")
private Integer port;
@Lob
@Column(name = "query_params")
private String queryParams;
@Lob
@Column(name = "url", nullable = false)
private String url;
我注意到出現了一個奇怪的注釋@Lob。我以前從未見過她。我決定用谷歌搜索它的含義以及為什么要放置它。我找到了很多答案,他們都說需要這個注解,以便Hibernate明白這里可能有一個大物件。
但在我看來,這個注釋什么也沒做。畢竟,不管值不值得,一切都一樣?
它是干什么用的?
uj5u.com熱心網友回復:
從外觀上看,您的物體生成工具只是標記了@Lob所有未指定長度的列 - 很可能只是為了確保您放入其中的任何資料都適合。
(比如說,在 Oracle 中,最大 BLOB/CLOB 大小是(4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB))
至于@Lob它本身,這是javadoc所說的:
指定應將持久屬性或欄位作為大物件持久保存到資料庫支持的大物件型別。便攜式應用程式在映射到資料庫 Lob 型別時應使用 Lob 注釋。當元素集合值為基本型別時,Lob 注釋可以與 Basic 注釋或 ElementCollection 注釋結合使用。Lob 可以是二進制或字符型別。
Lob 型別是從持久欄位或屬性的型別推斷出來的,除了基于字串和字符的型別,默認為 Blob。
二進制 lob (BLOB) 的常見用例是在資料庫中存盤一些二進制檔案內容,例如影像,以及字符 lob (CLOB) - 大型文本檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476393.html
標籤:爪哇 PostgreSQL 弹簧靴 休眠 弹簧数据-jpa
