본문 바로가기

SpringBoot

ch4 03. 엔티티 매니저 팩토리와 엔티티 매니저 - 실습

[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에 반영되어 삭제까지 잘 수행되었다.