Replies: 2 comments 1 reply
-
Out of the box it has You should NOT your In this code example I cant see how you call the data loader. I guess its Also note that re-using data loader instances between requests can lead to security problems - eg request A loads data X and then later request B will see that (potentially) cached data - which may be allowed or may not. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your reply. And I am trying to use mapstruct and dataloader together to make it easier to translate domain object to DTO. // ============================ Domain ===================
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Comment {
@Id
@GeneratedValue
private Long id;
private String content;
private Long articleId;
private String authorId;
private Instant createdAt;
}
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User {
@Id
private String username;
private String email;
private Instant createdAt;
}
// ============================ DTO ===================
@Data
public class CommentDTO {
private Long id;
private String content;
private Instant createdAt;
private UserDTO author;
}
@Data
public class UserDTO {
String username;
String email;
}
// ============================ Mapper ===================
@Mapper(componentModel = "spring")
public abstract class UserDTOMapper {
private @Autowired DataLoaderRegistry dataLoaderRegistry;
abstract UserDTO toDTO(User user);
@SneakyThrows
User toEntity(String id) {
DataLoader<String, User> userDataLoader = dataLoaderRegistry.getDataLoader("userLoader");
return userDataLoader.load(id).get(); // <-------- This is wrong, this will stuck the thread
}
}
@Mapper(componentModel = "spring", uses = {UserDTOMapper.class})
public abstract class CommentDTOMapper {
@Autowired private DataLoaderRegistry registry;
@Mapping(source = "authorId", target = "author")
abstract CommentDTO commentToCommentDTO(Comment comment);
abstract List<CommentDTO> map(List<Comment> comments);
} I know I am wrong to call |
Beta Was this translation helpful? Give feedback.
-
Hi, I am trying to use dataloader without graphql. I know there is a
ScheduledDataLoaderRegistry
to automatically call thedispatch
in everyDataLoader
but I still don't know how to use it. The code below seems not making the registry automatically trigger thedispatchAll
as expected.Beta Was this translation helpful? Give feedback.
All reactions