JPA 6

다양한 연관관계 매핑 (section 6)

다대일 단방향 매핑 package hellojpa; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; // 하나의 Team에 여러명의 Member가 포함이 되므로 1 : N의 관계 @ManyToOne // 연결해야 하는 columns의 값의 명 기입 // JoinColumn으로 매핑을 함 관리를 한다를 의미 @JoinColumn(name = "TEAM_ID") private Team team; public Long getId() { return ..

JPA 2022.08.23

연관관계 매핑 기초 (section 5)

@Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; // 1 대 N이며 team에 의해서 관리되고 있다는 것을 의미하기에 연관관계 주인은 team이라는 것을 의미하며 // members에 값을 넣어도 아무 관계가 벌어지지 않으며 team에서 모든 수정 작업이 이뤄진다. 값을 변경시에 team만을 참조한다. @OneToMany(mappedBy = "team") private List members = new ArrayList(); -------------------------------------------------------------------------..

JPA 2022.08.16

엔티티 매핑(section 4)

@Table(name = "MBR") ----------------------------------------------------------------------------------------------- Hibernate: select member0_.id as id1_0_0_, member0_.name as name2_0_0_ from MBR member0_ where member0_.id=? @Table(name = "MBR") 으로 MBR테이블을 찾아서 값을 수정하는 메소드를 날렸지만 해당 쿼리의 내용을 보게 되면 MBR 테이블이 DB에 생성이 되어 있지 않기 때문에 update쿼리가 날아가지 않게 된다. 데이터베이스 스키마 자동 생성(애플리케이션 로딩 시점에 created문으로 DB를 생성하..

JPA 2022.08.14

영속성 컨텍스트(section 3)

영속성 컨텍스트 EnitiyManager.persits(entity); : entity를 영속성 컨텍스트에 저장을 함 그렇다면 영속성 컨텍스트와 엔티티 매니저는 무엇일까? 엔티티 매니저를 생성시 1 : 1로 영속성 컨텍스트(눈에 보이지 않는 공간)가 생성이 된다. 비영속 (new/transient) 최초의 멤버 객체를 생성한 비 영속 상태 영속 (managed) entitymanager.persits()를 선언시 영속성 상태 준영속 (detached) 영속성에서 분리된 상태 삭제 (removed) 삭제된 상태 JPA의 작동 방식 : 1차 캐시에 persist된 (member)의 값을 먼저 조회 후 없을 시에 DB에서 조회를 한 후 1차 캐시에 저장한 후 반환하게 된다. 물론 이 경우 DB안에 값이 있어야..

JPA 2022.08.09

Transactional(section 2)

📖 Transactional의 이해 package hellojpa; import javax.persistence.Entity; import javax.persistence.Id; @Entity @Getter @Setter public class Member { @Id private Long id; private String name; } 📖 기본 적인 JPA의 실행 동작원리는 아래와 같은 그림으로 작동된다. Persistence라는 클래스에서 시작을 한 후 설정 정보를 조회 한 후 EntityManagerFactory를 생성한후 동작이 있을때마다 EntityManager를 생성한다. 먼저 JPA를 이용하여 Entity를 가져오게 되면 Transactional을 커밋하는 시점에 체크 한 후 변경점이 있다면..

JPA 2022.08.05

JPA의 소개(section1)

JPA의 소개 📖 JPA를 사용하기 전에 어떻게 발전해왔고 왜 사용하는지를 알고 써야 하기에 정리해봅니다. 지금은 객체를 관계형 DB에 넣어서 관리를 한다. 하지만 실상은 테이블 마다 SQL문법을 적어야 했기 때문에 맵핑을 하는 것에 상당량 시간을 허비하게 되었다. public class Memeber { privaet String memberId; privaet String name; } INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES SELECT MEMBER_ID, NAME FROM MEMBER M UPDATE MEMBER SET ... 위와 같은 쿼리 식을 수행해야 하게 된다. 하지만 기획자가 연락처를 추가하게 부탁을 하게 되는 경우 모든 쿼리를 다 수정하고 객체를 수정..

JPA 2022.08.05