Правильный ли подход - вставить объект «многие в один», используя Hibernate? - PullRequest
0 голосов
/ 16 января 2020

Я изучаю 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

Если вам, ребята, нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо!

...