본문 바로가기

TIL

[TIL 2022-2-4] Spring JPA 공부 시작!!

Spring jPA 공부를 시작했다. 김영한님에 말에 따라 기본개념강의를 건너 뛰고 [실전! 스프링 부트와 JPA 활용1] 강의를 듣기 시작했다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard

 

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의

실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강

www.inflearn.com

근데 내생각보다 더 기본 설명을 안하고 넘어가는 경우가 많아서, 개인적으로 공부하면서 정리하고 진행하는게 좋겠다고 느꼈다.

 

영속성 컨텍스트, EntityManger, @Transactional

영속성 컨텍스트(Persistence Context)란 엔티티를 영구 저장하는 환경이라는 뜻이다 라고한다.

 

처음 코드를 따라갈 때 persist() 메소드만을 호출해도 디비에 저장되는 것을 보고, 영구 저장한다는 말이 persist()를 호출하는 순간 데이터베이스에 영구적이라는 건가?? 라는 생각이 들었다. 물론 틀린 생각이었다.

 

영속성 컨테스트는 어플리케이션과 데이터베이스 사이에서 저장공간이다. EntityManger에 포함되고 관리된다. em.persist() 메소드는 영속성 컨텍스트에 엔티티 객체를 추가하는데, 이를 영속 상태라고한다. 영속 상태의 객체는 EntityManger에 의해 관리되고, 변경이 감지되면 데이터베이스에 적용시킨다.

 

persist() 메소드가 Insert 한다는 뜻인가? 라고 잘못 생각했던 것은 @Transactional 어노태이션이 자동으로 데이터베이스에 헌재 영속성컨텍스트의 상태를 데이터베이스에 반영하는 flush()를 실행시키기 때문이다. 때문에 아래와 같이 실험했을 때 'memberA hello' 가 데이터베이스에 저장되는 것이다.

persist()메소드를 호출후 객체를 변경하면, 영속성 컨택스트가 이 변경을 감지하고 @Transactional에 의해 자동으로 데이터베이스에 반영

 

 

@id, @GeneratedValue

@id - 테이블에서 Primary Key 역할을 지정해줌

@GeneratedValue - Auto_Increment 같이 설정해준 키 생성전략에 따라 키 값을 만들어준다. 기본 설정은 Auto로 되어있는데, 어노테이션이 붙은 프로퍼티의 타입에 따라 JPA가 키값을 설정해준다. Long 타입에 경우 1부터 1씩 증가되는 값을 가진다.

 

 

JSA 공부시작 후기...

이 것들외에도 훨씬 만은 기능들이 있는 것같은데 일단은 사용해보는게 목적이니까 앞으로 공부하면서 계속 조금씩 익혀나가야겠다. 정말 처음 공부해보는 기술이라 그런지 아직 너무 추상적이고, 들리게 이해한 부분들이 많이 있을 것 같다. 얼른 공부해서 이러한 부분들을 많이 해소하고 싶다!!

 

 

 

요즘 공부

갑자기 소마나 인턴 일정들이 나오면서, 서류 쓰는 것에 신경이 팔리고, 또 그러면서 공부는 잘안되니까 더 조급해져서 깊이있게 공부 하지못하는 악순환이 일어나고 있다. 지금에 집중하고 조급해지지 말자 정말


참고 -

https://velog.io/@neptunes032/JPA-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%9E%80

 

JPA 영속성 컨텍스트란?

영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.em.persist

velog.io

https://perfectacle.github.io/2018/01/14/jpa-entity-manager-factory/

 

(JPA) Entity와 EntityManager와 EntityManagerFactory

이미지 출처: <박상문의 Photo & Essay>평양 육아원의 모습 EntityDB의 테이블과 매칭이 되는 개념이라고 보면 된다.그렇다면 왜 이름이 Table이 아니라 Entity일까…? 만약 DB에 member라는 테이블이 있고,

perfectacle.github.io

https://private-space.tistory.com/81

 

[JPA] EntityManager, 영속성 컨텍스트

김영한 님의 [자바 ORM 표준 JPA 프로그래밍]을 읽고 내용을 정리한 것입니다. 교보문고 링크 EntityManager와 영속성 컨텍스트 mybatis처럼 직접 SQL을 작성하거나 JPA를 활용한 개발을 할 때는 눈에 보이

private-space.tistory.com