4. Spring DATA JPA 데이터 수정 및 삭제
- 📚 Spring/Spring JPA 실습
- 2020. 6. 9. 10:45
데이터 수정 테스트 코드
package com.kyhslam;
import java.util.Optional;
import java.util.stream.Stream;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.kyhslam.domain.Board;
import com.kyhslam.persistence.BoardRepository;
@RunWith(SpringRunner.class)
@SpringBootTest
public class BoardRepositoryTests {
@Autowired
private BoardRepository boardRepo;
@Test
public void testUpdate() {
System.out.println("Read First -----------");
Board board = boardRepo.findById(1L).get();
System.out.println("Update Title =----------");
board.setTitle("update 1 title");
System.out.println("Call Save() ----------- ");
boardRepo.save(board);
}
}
로그분석
Call Save() -----------
Hibernate: select board0_.bno as bno1_0_0_, board0_.content as content2_0_0_, board0_.regdate as regdate3_0_0_, board0_.title as title4_0_0_, board0_.updatedate as updatedate5_0_0_, board0_.writer as writer6_0_0_ from tbl_boards board0_ where board0_.bno=?
Hibernate: update tbl_boards set content=?, regdate=?, title=?, updatedate=?, writer=? where bno=?
save() 하는 로그를 보면 select문과 update가 실행되는 것을 볼 수 있다.
이처럼 JPA는 데이터베이스에 바로 작업을 하는 JDBC와는 달리 스스로 엔티티 객체들을 메모리 상에서 관리하고, 필요한 경우에 데이터베이스에 작업을 하게 된다.
즉, 수정과 삭제 작업은 직접 데이터베이스에 바로 SQL문을 실행하는게 아니고 엔티티 객체가 우선적으로 메모리상에 존재하고 있어야 한다. 이 과정을 위해서 SELECT가 동작하게 되는 것이다.
참고로 여기서 다시 수정할 경우 조회한 엔티티와 수정된 엔티티가 동일한 값들을 가지고 있어서 수정할 필요가 없기 때문에 UPDATE문을 실행하지 않는다.
데이터 삭제
@Test
public void testDelete() {
System.out.println("DELETE Entity ====== ");
boardRepo.deleteById(1L);
}
로그확인
DELETE Entity ======
Hibernate: select board0_.bno as bno1_0_0_, board0_.content as content2_0_0_,
board0_.regdate as regdate3_0_0_, board0_.title as title4_0_0_, board0_.updatedate as
updatedate5_0_0_, board0_.writer as writer6_0_0_ from tbl_boards board0_ where board0_.bno=?
Hibernate: delete from tbl_boards where bno=?
'📚 Spring > Spring JPA 실습' 카테고리의 다른 글
6. Spring Data JPA : 데이터 조회 페이징 (Pageable) (0) | 2020.06.15 |
---|---|
5. Spring Data JPA : 데이터 조회 (쿼리 메소드) (0) | 2020.06.09 |
3. Spring JPA 데이터 조회(findById) 테스트 (0) | 2020.06.08 |
2. Spring JPA isnert 테스트 (0) | 2020.06.08 |
1. Springboot JPA Oracle 연동 설정 (0) | 2020.06.05 |