Я изучаю Hibernate и Querydsl в приложении с весенней загрузкой.
Я не уверен, что то, что я делаю, является правильным подходом или нет, вот как я вставляю много в одну сущность
// BoardMaster.java
public void addBoards(Boards boards){
this.boards.add(boards);
boards.setBoardMaster(this);
}
// Service.java
@Override
@Transactional
public void save(BoardsRequestDto boardsRequestDto) {
BoardMaster boardMaster = boardMasterService.getOne(boardsRequestDto.getBbsId());
Boards boards = boardsRequestDto.toEntity();
boardMaster.addBoards(boards);
boardMasterRepository.save(boardMaster);
}
Доски - это сущность, имеющая отношение «многие к одному», и BoardMaster содержит сущность Доски в виде списка.
Итак, сначала я пытаюсь получить boardMaster и добавить доски в boardMaster, наконец запустить метод сохранения.
Я подумал, что должен использовать или создать метод обновления для добавления плат в BoardMaster, но я нашел статью, в которой говорится о save (), которую можно использовать и для обновления, когда я выбираю сущность из контекста постоянства. Как говорится в этой статье, этот метод работает нормально, но я не уверен, что это нормально. я чувствую, что это необычно, так как я никогда раньше не использовал hibernate.
И я использую Querydsl для обновления сущностей, которые также чувствуются необычно
@Override
public void modify(BoardMasterRequestDto boardMasterRequestDto, Long bbsId){
queryFactory.update(boardMaster)
.set(boardMaster.bbsName, boardMasterRequestDto.getBbsName())
.set(boardMaster.bbsIntro, boardMasterRequestDto.getBbsIntro())
.set(boardMaster.isPossibleToAttachFiles, boardMasterRequestDto.isPossibleToAttachFiles())
.set(boardMaster.amountOfAttachment, boardMasterRequestDto.getAmountOfAttachment())
.set(boardMaster.availableFileSize, boardMasterRequestDto.getAvailableFileSize())
.set(boardMaster.isPossibleToReply, boardMasterRequestDto.isPossibleToReply())
.set(boardMaster.templateId, boardMasterRequestDto.getTemplateId())
.set(boardMaster.templateName, boardMasterRequestDto.getTemplateName())
.set(boardMaster.useAt, boardMasterRequestDto.isUseAt())
.set(boardMaster.bbsUseFlag, boardMasterRequestDto.getBbsUseFlag())
.set(boardMaster.targetId, boardMasterRequestDto.getTargetId())
.set(boardMaster.countOfComment, boardMasterRequestDto.getCountOfComment())
.set(boardMaster.option, boardMasterRequestDto.getOption())
.set(boardMaster.isPossibleToComment, boardMasterRequestDto.isPossibleToComment())
.set(boardMaster.satisfaction, boardMasterRequestDto.getSatisfaction())
.where(boardMaster.bbsId.eq(bbsId))
.execute();
}
Этот метод работает хорошо, но Я уверен, что есть более эффективный способ обновления с помощью Hibernate. Пожалуйста, дайте мне несколько советов 101
Если вам, ребята, нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо!