inblog logo
|
하쎄의 기술 일기장
    springboot

    JPA 방식의 Dummy 데이터 생성하기

    5. DB 더미 생성
    하세연's avatar
    하세연
    Aug 19, 2024
    JPA 방식의 Dummy 데이터 생성하기
    Contents
    1. 클라이언트-서버 요청과 응답의 과정 이해2. application.properties 설정하기3. Repository 생성하기4. 더미 데이터 생성 sql문 생성하기

    1. 클라이언트-서버 요청과 응답의 과정 이해

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

    2. application.properties 설정하기

    notion image
    notion image
    위와 같이 설정하게 되면 오류가 발생한다.
    여기서 12번째 줄에 classpath를 추가해 주어야한다
    notion image
     
    • 한글이 깨질 경우 설정 수정하기
    한글 깨지는 경우 설정에 들어가서 해당 부분을 IntelliJ IDEA로 둘 다 수정해야 한다
    한글 깨지는 경우 설정에 들어가서 해당 부분을 IntelliJ IDEA로 둘 다 수정해야 한다
     

    3. Repository 생성하기

     
    notion image
    • 해당 위치에 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문 생성하기

    notion image
    • 다음 위치에 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

    하쎄의 기술 일기장

    RSS·Powered by Inblog