我的数据库中有一个请求表。这是它的结构

通常我用手创建实体,但这一次我决定从数据库中生成它。这是我得到的
@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就可以理解这里可能有一个大对象。
但在我看来,这个注释没有任何作用。毕竟,不管是否值得,一切都是一样的?
它是用来做什么的?
发布于 2022-05-08 12:55:40
从它的外观来看,您的实体生成工具只是用@Lob标记了所有没有指定长度的列--最有可能的是确保您放入的任何数据都符合它们的要求。
(例如,在Oracle中,最大BLOB/CLOB大小为(4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB))
至于@Lob本身,javadoc是这样说的:
指定应将持久性属性或字段作为大对象持久化到数据库支持的大对象类型。可移植应用程序在映射到数据库Lob类型时应该使用Lob注释。当元素集合值是基本类型时,可以将Lob注释与基本注释或ElementCollection注释结合使用。Lob可以是二进制类型,也可以是字符类型。Lob类型是从持久化字段或属性的类型推断出来的,除了字符串和基于字符的类型外,默认为Blob。
二进制lobs (BLOB)的常用用法是在数据库中存储一些二进制文件内容,比如图像,以及字符lobs (CLOBs) --大型文本文档。
https://stackoverflow.com/questions/72154180
复制相似问题