Service 클래스는 비즈니스 로직을 수행,
DTO는 해당 로직의 결과를 클라이언트에 전달할 형식으로 변환
package com.example.blog.Board;
import lombok.Data;
public class BoardResponse { // board DTO
// board객체를 옮겨주기
@Data // get, set 포함
public static class DTO {
private int id;
private String title;
public DTO(Board board) { // Board객체 통째로 받기
this.id = board.getId();
this.title = board.getTitle();
}
}
}
package com.example.blog.Board;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@RequiredArgsConstructor
@Service
public class BoardService {
private final BoardRepository boardRepository;
public List<BoardResponse.DTO> 게시글목록보기() {
List<BoardResponse.DTO> dtos = new ArrayList<>();
List<Board> boardList = boardRepository.findAll();
for (Board board : boardList) {
BoardResponse.DTO dto = new BoardResponse.DTO(board);
dtos.add(dto);
}
return dtos;
}
}
package com.example.blog.Board;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
@RequiredArgsConstructor // hibernate 생성자를 만들어줌
@Controller
public class BoardController {
// final : 객체가 생성될 때 반드시 초기화. 이후 변경 불가능
// boardService 필드를 final로 선언
private final BoardService boardService; // 생성자
@GetMapping("/")
public String list(Model model) { // DS(request 객체를 model 객체로 랩핑하여 전달)
List<BoardResponse.DTO> boardList = boardService.게시글목록보기(); // 요청을 위임받고 다시 보냄
model.addAttribute("models", boardList); // 받아서 모델에 저장
return "list"; // 리턴 파일을 템플릿파일에서 찾음.
// viewresolver를 가지고 있어서 앞뒤로 적용 - 문자열 그대로 요청
}
}
package com.example.blog.Board;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Query;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
// 데이터 저장, 조회 등 DB와 직접 연결되어 작업 처리
@RequiredArgsConstructor
@Repository
public class BoardRepository {
// JPA는 EntityManager로 DB에 접근 (자바에서 DBConnection)
private final EntityManager em;
public List<Board> findAll() {
Query q = em.createNativeQuery("select * from board_tb order by id desc", Board.class);
return q.getResultList();
}
}
Share article