[Main.java]

[User.java]
User 클래스에 @Entity를 붙여준다.

+ DB는 MySQL에 연결!
실행을 해도 DB엔 반영되지 않기 때문에 트랜잭션을 넣어준다.

트랜잭션을 추가해준 후 실행하면 SQL문장이 생성되어 실행된 것을 확인할 수 있다.

이미 테이블이 존재하면 삭제하고 새로 생성하는 drop 문장이 create전에 존재하는 것을 볼 수 있는데,
이유는 application.properties에 추가한 spring.jpa.hibernate.ddl-auto=create문장에서 create로 지정해서이다.
create로 두었기 때문에 SQL문이 실행할 때마다 기존에 존재하는 데이터를 지우고 새로 생성한다.



비밀번호의 값을 변경하면 update문이 실행되면서 변경한 값이 DB에 반영되는 것을 볼 수 있다.

user2와 user의 값이 같은지 조회하는 문장을 추가해서 실행해봤을 때 select문장은 수행되지 않는다.
"aaa"를 가지고 있는 User 객체는 엔티티 매니저가 관리하는 영속 상태이다.
그렇기 때문에 DB까지 가지 않고 효율적으로 동작하는 것이다.
- 없는 데이터를 가져오는 경우

"bbb"는 엔티티 매니저에 없으니 DB에서 가져오려 한다. 먼저 엔티티 매니저를 확인한 후 없으니 DB를 조회하기 때문에
select문이 실행된다.
- 데이터 삭제

삭제를 별개의 트랜잭션으로 지정해주고 remove()를 수행하니 delete문장이 실행되는 것을 볼 수 있다.

DB에 반영되어 삭제까지 잘 수행되었다.
'SpringBoot' 카테고리의 다른 글
| ch4 02. 엔티티 매니저 팩토리와 엔티티 매니저 (0) | 2023.07.31 |
|---|---|
| ch4 01. JPA의 개요와 설정 (0) | 2023.07.31 |
| ch3 12. 데이터 모델링하는 방법 (0) | 2023.07.31 |
| ch3 11. 데이터 모델링이란 (0) | 2023.07.31 |
| ch3 10. AOP 원리와 용어 (0) | 2023.07.31 |