1. 클라이언트-서버 요청과 응답의 과정 이해
클라이언트가 URL을 통해 서버에 요청하면 Controller에서 Repository로 위임한다.
이후 Repository에서 DB에 관한 CRUD를 실행하는데 여기서 IOC의 Entity Manager를 거쳐 DB의 작업을 처리한다.

2. application.properties 설정하기


위와 같이 설정하게 되면 오류가 발생한다.
여기서 12번째 줄에 classpath를 추가해 주어야한다

- 한글이 깨질 경우 설정 수정하기

3. Repository 생성하기

- 해당 위치에 BoardRepository 클래스를 생성하고 다음과 같이 코드를 작성한다
package shop.mtcoding.blog.board;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository // IoC
public class BoardRepository {
@Autowired // IoC에 있는것을 가져온다.
private EntityManager em;
public List<Board> findAll() {
Query query = em.createNativeQuery("select * from board_tb order by id desc", Board.class); // Board.class 부분에는 @Entity로만 관리되는 클래스들만 사용 가능
List<Board> boardList = query.getResultList();
return boardList;
}
@Transactional
public void save(String title, String content) {
Query query = em.createNativeQuery("insert into board_tb(title, content, created_at) values (?, ?, now())");
query.setParameter(1, title); // ? 완성
query.setParameter(2, content); // ? 완성
query.executeUpdate(); // 쿼리 전송
} // commit 이 자동으로 됨
}4. 더미 데이터 생성 sql문 생성하기

- 다음 위치에 db를 생성하고 data.sql 파일과 코드를 작성한다.
insert into board_tb(title, content, created_at)
values ('제목1', '내용1', now());
insert into board_tb(title, content, created_at)
values ('제목2', '내용2', now());
insert into board_tb(title, content, created_at)
values ('제목3', '내용3', now());
insert into board_tb(title, content, created_at)
values ('제목4', '내용4', now());
insert into board_tb(title, content, created_at)
values ('제목5', '내용5', now());해당 위치의 생성한 sql문은 spring이 작동을 시작할 때, application.properties에 앞서 작성한 classpath:db/data.sql을 통해 실행된다.
Share article