inblog logo
|
silver
    스프링부트

    [스프링부트 blogV2] 2.Repository - jpql로 작성하기, Optional을 이용한 null처리

    silver's avatar
    silver
    Jan 11, 2025
    [스프링부트 blogV2] 2.Repository - jpql로 작성하기,  Optional을 이용한 null처리
    Contents
    Service
     
    public List<Board> findAll() { return em.createQuery("select b from Board b order by b.id").getResultList(); } public Optional<Board> findById(int id) { return Optional.ofNullable(em.find(Board.class, id)); } public void save(Board board) { // board 객체를 만들어서 던지면 insert해준다. em.persist(board); } public void delete(int id) { em.createQuery("delete from Board b where b.id = :id").setParameter("id", id).executeUpdate(); }
    notion image
    db에서 조회할 때 터진 것이 아니라 null에서 값을 꺼내려고 null.getId이 불러와지면서 터짐
    → 서비스레이어에서 호출할 때 터진 것이다.
    →null처리를 해줘야한다.
    → Repository에서 Optional이라는 컨테이너로 감싼 걸 넘긴다. 안에는 null일수도 board일수도 있다. 컨테이너는 null이 아님 → nullpointexception 방지
    public Optional<Board> findById(int id) { return Optional.ofNullable(em.find(Board.class, id)); }

    Service

    public BoardResponse.DetailDTO 게시글상세보기(int id) { Board board = boardRepository.findById(id) .orElseThrow(()->new RuntimeException("해당 id의 게시글이 없습니다:"+id)); return new BoardResponse.DetailDTO(board); }
     
     
    notion image
     
    Share article
    Contents
    Service

    silver

    RSS·Powered by Inblog