如何正确获取实体相关对象
How to get an entity-related object correctly
我大约有以下实体:
public class Article {
private String name;
private Long fileId;
}
可以看到,它有一个字段fileld
,包含关联文件的id,也是一个实体。但是,该文件对 Article
一无所知,因此唯一连接它们的是 Article
中的 fileId
字段。因此,它们必须显式链接,以免丢失。现在要获得一个链接文件,我必须为每个 Article
对数据库进行单独的查询。也就是说,如果我想得到10个Article
的列表,我需要向数据库发出10次请求,通过id获取文件。这看起来效率很低。如何才能做得更好?我使用 jooq
,所以我不能使用 JPA
,所以我不能用文件对象代替 fileId
字段。有什么想法吗?
我假设您的基础表是这样的:
create table file (
id bigint primary key
content blob
);
create table article (
name text,
file_id bigint references file
);
在这种情况下,您可以使用这样的单个查询将所有 10 个文件提取到内存中:
Result<?> result =
ctx.select()
.from(ARTICLE)
.join(FILE).on(ARTICLE.FILE_ID.eq(FILE.ID))
.fetch();
我大约有以下实体:
public class Article {
private String name;
private Long fileId;
}
可以看到,它有一个字段fileld
,包含关联文件的id,也是一个实体。但是,该文件对 Article
一无所知,因此唯一连接它们的是 Article
中的 fileId
字段。因此,它们必须显式链接,以免丢失。现在要获得一个链接文件,我必须为每个 Article
对数据库进行单独的查询。也就是说,如果我想得到10个Article
的列表,我需要向数据库发出10次请求,通过id获取文件。这看起来效率很低。如何才能做得更好?我使用 jooq
,所以我不能使用 JPA
,所以我不能用文件对象代替 fileId
字段。有什么想法吗?
我假设您的基础表是这样的:
create table file (
id bigint primary key
content blob
);
create table article (
name text,
file_id bigint references file
);
在这种情况下,您可以使用这样的单个查询将所有 10 个文件提取到内存中:
Result<?> result =
ctx.select()
.from(ARTICLE)
.join(FILE).on(ARTICLE.FILE_ID.eq(FILE.ID))
.fetch();