본문 바로가기

Spring&IntelliJ

(44)
JPA 영속성 컨텍스트의 이해 출처: https://www.youtube.com/watch?v=QBISxH_KHog&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=7 위의 Update쿼리가 생성되는 경우를 좀더 자세히 설명하면 이렇다. em.find(Customer.class, "ID0001");로 DB로부터데이터를 가지고온다(1차 캐쉬의 데이터를 가지고 온다고 생각해도 좋음) => 그렇게 정보를 가져온직후 PersistenceContext의 스냅샷을 찍는다. => setName("Song")을 통해 정보가 update되었다. => 찍어두었던 1차 캐시의 스냅샷정보와 현재 PersistenceContext의 상태를 비교한다.=> 만약에 다를 경우 update SQL쿼리를 생성하여 쓰기지연 SQL저장..
JPA 내부동작방식 출처: https://www.youtube.com/watch?v=mj7mOMqHM68&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=6 요약: EntityManager와 그 메서드를 통한 영속객체 관리. 영속성 컨택스트(Persistence Context) 무엇보다 중요한 것은 데이터를 DB에서 가져오기전에 해당 데이터를 가져오고, 트랜젝션이 종료되는시점에 DB에 데이터를 저장하기 전에 데이터가 기록되는 중간단계인 영속성 컨텍스트안의 1차 케시라는 공간이 존재한다는 것을 아는 것이 중요합니다. JPA를 사용한다는 것은 JPA에게 SQL 쿼리문을 생성하는 작업을 위임한다는 것인데 그 과정을 JPA가 어떻게 처리하는지 살펴보는 글 순수 JPA에서는 여태까지 공부하면서 봤던..
JPA DB에서 데이터 가져오기 출처: https://www.youtube.com/watch?v=4S9Td7L6_2o&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=5 요약: 1. 어떠한 라이브러리에 있는 메서드가 반환하는 것이 객체이고 그것을 받아 사용하기 위해서는 내 측에서는 반드시 그 클래스에 대한 default생성자가 기본적으로 존재해야 한다는 것이다. 2. JPA의 EntityManager가 관리하는 영속객체라면 수정을 했을시 따로 EntityManager에게 update요청을 하지 않더라도 commit()된다면 DB로의 수정 쿼리가 날아가고 DB에 수정내역이 반영된다. 이전시간까지 jpa를 이용하여 db에 데이터를 저장하는 연습을 하고 이번 시간에는 db에 저장되어 있던 데이터를 가지고와서..
JPA (실습을 통해 익숙해 지는 JPA)EntityManager 출처: https://www.youtube.com/watch?v=dxnTN-fKbGA&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=3 요약: EntityManager란? 영속성을 위해 Entity를 관리하는 객체. 즉 JPA를 위한 어노테이션이 존재하고 그 어노테이션들 중 특정 어노테이션이 붙은 클래스는 DB에 테이블 형태로 저장되는 클래스임(예를들어 @Entity, @Table). 위 그림에서 보는 것처럼 JPA는 JDBC를 기반으로함. 실제 DB에데이터를 쓰고 읽는 것은 JDBC를 통해 행해지는 것임. EntityManager란? 영속성을 위해 Entity를 관리하는 객체. public class Join { public void join(String name, ..
[Spring Boot] @SpringBootApplication 이란? 출처: https://bamdule.tistory.com/31 1. XXXApplication.java 스프링부트는 main 메소드가 선언된 클래스를 기준으로 실행됩니다. import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BamduleApplication { public static void main(String[] args) { SpringApplication.run(BamduleApplication.class, args); } } @SpringBootApplication 어노..
JPA (ORM매핑에 관해서)객체의 세상과 테이블의 세상(Feat. Persistence Framework) # UI 설계 출처: https://www.youtube.com/watch?v=koZtvSPdRXI&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=2 요약 1.@Repository어노테이션이 붙는 클래스가 자원접근 레이어에 속하는 클래스임. 2. 자원접근 레이어가 곧 Persistence Layer임 자원접근 레이어란? 데이터가 저장소에 저장되는 형식을 결정하는 층(저장소의 종류는 아래 그림과 같이 다양하며 자원 접근레이어의 모듈에 의해 저장되는 형식이 결정됨) UI설계 즉, HTML 문서 작성시 고려해야 할 것은 크게 두 가지임. Data를 어떻게 보여 주는가, 사용자가 요청하는 Event를 어떻게 처리할 것인가. 서버-클라이언트 설계모델을 봤을때 프론트 쪽은 그림의..
JPA 객체와 테이블 매핑할때 사용되는 어노테이션2 @Id, @Access https://www.youtube.com/watch?v=dw3PxjDGkT8 요약 (지금 내 생각으로는 @Entity어노테이션으로 해당 클래스가 영속성 클래스로 jpa에 의해 관리되어 지는 클래스이기는 하지만 영속성 클래스 객체가 PersistenceManager에게 관리되어 지는 것과는 다른 문제임. 영속성 객체로 관리되어 지려면 EntityManager클래스의 persist함수의 매개변수로 해당 객체가 들어가야 한다. 다만 @Entity 어노테이션으로 해당 클래스를 영속성 클래스로 만든다면 다음과 같은 효과가 있다. 구체적으로 클래스에 @Entity가 붙는것이 영속객체와 어떤 상관관계가 있는 것인가? 예를들어 em.find(Customer.class, "Id001")이라는 EntityManager의..
JPA 객체와 테이블 매핑할때 사용되는 어노테이션1 (스키마 자동생성 옵션) @Entity, @Table 요약: @Entity:이 어노테이션이 붙은 클래스는 영속객체로 관리되는 클래스임을 나타냄(구체적으로 클래스에 @Entity가 붙는것이 영속객체와 어떤 상관관계가 있는 것인가? 예를들어 em.find(Customer.class, "Id001")이라는 EntityManager의 함수find가 있을경우 이 함수는 주워진 매개변수를 이용하여 Entity객체를 생성, 반환해야 한다. 당연히 매개변수와 관계된 데이터는 DB에 있었다는 말이고 특정 레코드에 있는 데이터를 이용해서 객체를 만드는 것이니 객체의 클래스는 그 데이터에 대응하는 생성자가 필요한 것이다. 따라서 클래스 자체에 @Entity라는 어노테이션을 붙여서 모든 필드정보와 생성자 정보를 제공하게 하여 생성된 객체가 영속성 컨텍스트에 의해 관리받는 영속객..