
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;
}
}
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
}
}

BoardRequest 만들기
saveDTO 만들기 → 게시글 데이터를 전달하기 위한 'Data Transfer Object'
DTO로 받아서, Entity로 변경해서 PC에서 던져야 한다

toEntity() 메소드는 이 DTO 객체를 Board 엔티티 객체로 변환하는 역할. 이 메소드는 Board 객체를 새로 생성하여, DTO에 저장된 제목, 내용, 사용자 이름을 Board 객체의 생성자로 전달한다. 이렇게 생성된 Board 객체는 데이터베이스에 저장될 준비가 된다!
* id는 자동 생성, createdAt은 엔티티가 저장되는 시점에 자동으로 설정되니까 3개만!
* Board객체 자체를 받으니까 Board 객체의 생성자로 받아서 태어나게 하는듯 하다
BoardController save 메서드 수정하기

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


Share article