【发布时间】:2018-01-08 00:03:37
【问题描述】:
在我的控制器中,我使用 CrudRepository 方法 findAll() 来查找我的数据库中的所有用户,如下所示:
userRepository.findAll()
问题是这样做至少需要 1.3 分钟才能加载 1.500 个用户。从那里我使用 Thymeleaf 将数据加载到模型中,并将其显示在 html 表中:每个用户的名称、创建时间、电子邮件、ID、数据包和状态。有什么方法可以提高性能或解决我的问题吗? 任何帮助都会非常感激。
这是我的用户实体
@Id
@SequenceGenerator(name = "user_id_generator", sequenceName = "user_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_generator")
private Long id;
@Column(nullable = false, unique = true)
private String email;
@Column(name = "uuid", nullable = false, unique = true)
private String uuid;
@Column(name = "reset_pwd_uuid", unique = true)
private String resetPwdUuid;
@Column(nullable = false)
private String password;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Status status;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Packet packet = Packet.BASE;
@Enumerated(EnumType.STRING)
@Column
private Situation situation;
@Column(nullable = false, name = "numberOfSomething")
private Integer apples;
@Column(nullable = false, name = "numberOfSomethingElse")
private Integer oranges;
@Column(name = "time_created")
private Timestamp timeCreated;
@OneToMany(mappedBy = "user", cascade = {CascadeType.REMOVE})
@LazyCollection(LazyCollectionOption.FALSE)
@OrderBy("rank ASC")
private List<Person> person;
@OneToMany(mappedBy = "user", cascade = {CascadeType.REMOVE})
@LazyCollection(LazyCollectionOption.FALSE)
@OrderBy("timeOccured ASC")
private List<History> history;
@OneToMany(mappedBy = "user", cascade = {CascadeType.REMOVE})
@LazyCollection(LazyCollectionOption.FALSE)
@OrderBy("id ASC")
private List<Invoice> invoices;
@OneToOne(mappedBy = "user", cascade = {CascadeType.REMOVE})
private Building building;
@OneToOne(mappedBy = "user", cascade = {CascadeType.REMOVE})
private House house;
@OneToOne(mappedBy = "user", cascade = {CascadeType.REMOVE})
private Car car;
@OneToOne(mappedBy = "user", cascade = {CascadeType.REMOVE})
private Street street;
@OneToOne(mappedBy = "user", cascade = {CascadeType.REMOVE})
private Moreof moreof;
@JoinColumn(name = "basedata_id", referencedColumnName = "id")
@ManyToOne(cascade = {CascadeType.REMOVE})
private Basedata basedata;
@Column(name = "family")
private String family;
@Column(name = "unkle_mail")
private boolean unkleMail;
@Column(name = "vacation")
private LocalDate vacationUntil;
@Column(name = "ordered")
private boolean ordered;
@Column(name = "shipped")
private boolean shipped;
@Transient
private boolean isEdit;
@Transient
private boolean one;
@Transient
private boolean two;
@Transient
private boolean three;
@Transient
private boolean four;
@Transient
private LocalDate regDate;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user", cascade = CascadeType.REMOVE)
private List<Bed> bed;
【问题讨论】:
-
您需要在急切模式下加载列表
bed还是在惰性模式下加载?这可能会产生影响。
标签: java spring spring-boot spring-data