GithubHelp home page GithubHelp logo

boardproject's Introduction

header

Top Langs

Velog's GitHub stats

Anurag's GitHub stats

boardproject's People

Contributors

again7536 avatar monacobbb avatar phdljr avatar

Stargazers

 avatar

Watchers

 avatar

boardproject's Issues

DTO Setter 제거

개발 내용

  • 클래스 전체 setter 제거하기

3. 클래스 전체 @Setter 제거하기

Entity에는 없애는게 맞다고 생각했는데, DTO도 제거하는게 맞는 것 같아.
실제로 개발하면서 DTO에 setter를 사용한 적이 잘 없는 것 같아.
하물며, 데이터가 변경될 위험도 줄어드니 확실히 제거하는게 맞는 것 같다!
Originally posted by @phdljr in #14 (comment)

Board -> BoardResponseDto 변환 로직 추가

개발 내용

  • BoardResponseDto 변환 로직을 DTO 클래스 안에 추가하기

2. Board -> BoardResponseDto 변환 로직을 Board나 BoardResponseDto에 넣기

지금보니, 구조가 조금 이상한 것 같네.
게시글 목록 조회랑 게시글 조회를 따로 생각해서 그런지 뭔가 엉킨 느낌이 드네.
변환 로직을 Board나 BoardResponseDto에 넣는게 훨씬 더 나을 거 같다!
나는 개인적으로 Entity에는 DB에 영향을 주는 코드만을 적어주는게 나아 보여서,
DTO에 넣어두면 어떨까 싶은데, 어때?
Originally posted by @phdljr in #14 (comment)

기본키 자동 생성 전략

image

현재 기본키 자동 생성 전략이 따로 설정이 안되있어서 기본키인 ID 값이 알수없는 로직으로 생성되버리는데

public class Board extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

IDENTITY 전략을 사용해서 자동 증가되게함이 어떨까?

Dto 로직분리

단일 책임 원칙에 따라 Dto에는 원칙적으로는 비즈니스 로직이 첨가되어서는 안될 것 같음

src/main/java/kr/ac/project/boardproject/dto/response/BoardListResponseDto.java 코드를 보면 로직이 포함됨
게다가 해당 DTO가 사용되는 곳이 BoardService 하나 밖에 없으므로 로직 분리가 필요할듯

@Getter
@Setter
public class BoardListResponseDto {
    private int totalPageNumber;
    private int currentPageNumber;
    private boolean previousPage;
    private boolean nextPage;
    private List<Integer> pageList;
    private List<BoardResponseDto> boardList;

    public BoardListResponseDto(Page<Board> page) {
        makePageList(page);
    }

    private void makePageList(Page<Board> page) {
        int pageSize = page.getSize();

        totalPageNumber = page.getTotalPages();
        currentPageNumber = page.getNumber() + 1;
        boardList = makeBoardListDto(page);

        int tempEnd = (int)Math.ceil(currentPageNumber / (float)pageSize) * pageSize; // 23페이지라면 20페이지로 맞춰주기
        int start = tempEnd - (pageSize - 1);
        int end = Math.min(totalPageNumber, tempEnd);
        previousPage = start > 1;
        nextPage = totalPageNumber > tempEnd;
        pageList = IntStream.rangeClosed(start, end).boxed().collect(Collectors.toList());
    }

    private List<BoardResponseDto> makeBoardListDto(Page<Board> page) {
        return boardList = page.getContent().stream().map(board ->
                BoardResponseDto.builder()
                        .id(board.getId())
                        .title(board.getTitle())
                        .nickname(board.getMember().getNickname())
                        .registerDate(board.getRegisterDate())
                        .hit(board.getHit())
                        .build()
        ).collect(Collectors.toList());
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.