v2 - insert 하기 (최종 정리)

coding S's avatar
Mar 14, 2024
v2 - insert 하기 (최종 정리)

Native쿼리로 작성했던 insert 쿼리문을 수정할 것!

 

BoardPersistRepository save 만들기

package shop.mtcoding.blog.board; import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor @Repository public class BoardPersistRepository { private final EntityManager em; @Transactional public Board save(Board board) { // 1. 비영속 객체 em.persist(board); // 2. board -> 영속 객체 return board; } }
 

Board 엔티티 생성자 수정 및 날짜 어노테이션 수정

@NoArgsConstructor @Data @Table(name = "board_tb") @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String title; private String content; private String username; @CreationTimestamp // pc -> db (날짜주입) private Timestamp createdAt; public Board(String title, String content, String username) { this.title = title; this.content = content; this.username = username; } }
 

BoardPersistRepository 단위 테스트

package shop.mtcoding.blog.board; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.context.annotation.Import; @Import(BoardNativeRepository.class) @DataJpaTest public class BoardPersistRepositoryTest { @Autowired // DI private BoardPersistRepository boardPersistRepository; @Test public void save_test(){ // given Board board = new Board("제목5", "내용5", "ssar"); // when boardPersistRepository.save(board); System.out.println("save_test : "+board); // then } }
notion image
 

BoardRequest 만들기

💡
saveDTO 만들기 → 게시글 데이터를 전달하기 위한 'Data Transfer Object' DTO로 받아서, Entity로 변경해서 PC에서 던져야 한다
notion image
toEntity() 메소드는 이 DTO 객체를 Board 엔티티 객체로 변환하는 역할. 이 메소드는 Board 객체를 새로 생성하여, DTO에 저장된 제목, 내용, 사용자 이름을 Board 객체의 생성자로 전달한다. 이렇게 생성된 Board 객체는 데이터베이스에 저장될 준비가 된다!
💡
* id는 자동 생성, createdAt은 엔티티가 저장되는 시점에 자동으로 설정되니까 3개만! * Board객체 자체를 받으니까 Board 객체의 생성자로 받아서 태어나게 하는듯 하다
 

BoardController save 메서드 수정하기

notion image
💡
toEntity 메서드로 던져서 동기화가 됨
💡
그리고 이게 끝이다… 진짜 글쓰기가 된다.
 

화면 확인

notion image
notion image
 
Share article

codingb