변경감지와 병합
·
💻 Dev/JPA
JPA에서 데이터를 변경할때의 기본 메커니즘은 변경 감지(Dirty Checking)이다.개인적으로 신기하다고 생각해서 정리하게 되었다.아직은 내용이 많이 부족해서 더 채워야 할 것 같다... 더티 체킹(Dirty Checking) a.k.a 변경 감지란?@Transactionalpublic void updateItem(Long itemId, String name, int price, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setName(name); findItem.setPrice(price); findItem.setStockQuantity(stockQuantity);}위는 pk인 i..
단방향, 양방향 연관관계 매핑
·
💻 Dev/JPA
이때까지 나도 테이블에서 외래키로 관리된 연관관계를 객체로 만들면 그 외래키를 VO에 만들어 쓰곤 했다..내가 n년 동안 해왔던 게 사실은 객체지향적인 방법이 아니었다는 걸 알게 되었다. JPA를 배우면 배울수록 이제야 알게 됐다는 게 아쉬울 뿐이다.  단방향 연관관계테이블 구조는 그대로고, Member에 teamId가 아닌 Team 객체 자체로 연관관계를 설정한다.(여러 명의 멤버가 한 팀에 소속될 수 있기 때문에 @ManyToOne이다.)@Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age..
연관관계가 필요한 이유
·
💻 Dev/JPA
'연관관계 매핑' 섹션에서는 JPA를 공부하면서 다대일(ManyToOne), 일대다(OneToMany) 이런 단어들을 계속 듣게 될 텐데, 이 부분의 기초적인 내용과 JPA에서 연관관계란 어떤 건지 배울 수 있었다.  연관관계가 필요한 이유먼저 학습을 위해 필요한 용어에는 3가지가 있다.방향(Direction): 단방향, 양방향다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)연관관계의 주인(Owner): 객체 양방향 연관관계를 관리하는 주인이 필요여기서 다중성도 중요하지만 연관관계의 주인이 꽤나 중요한 개념이다. 나도 포스팅하면서 다시 복기해야겠다.. 예제 시나리오회원과 팀이 있다.회원은 하나의 팀에만 소속될 수 있다.회원과 팀은 다대일 관계다.먼저 ..
엔티티 매핑
·
💻 Dev/JPA
JPA로 객체를 관리할 때 주로 쓰는 어노테이션을 배운 섹션이었다.  객체와 테이블 매핑@Entity•  @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.•  J•PA를 사용해서 테이블과 매핑할 클래스는 @Entity를 필수로 붙여줘야 한다. @Table•  엔티티와 매핑할 테이블 지정•  예약어라 다른 테이블명과 매치해 줄 때 사용 ex) order  필드와 컬럼 매핑@Table(name="members")@Entitypublic class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STR..
영속성 컨텍스트
·
💻 Dev/JPA
우선 내가 지금까지 JPA 기본편과 활용편을 수강하면서 중요하다고 생각한 개념에는 4가지가 있다. 1. 영속성 컨텍스트2. 연관관계 매핑3. 프록시 개념4. 즉시 로딩과 지연 로딩 이 4가지는 꼭 개념 정리를 확실히 해서 기록해보고자 한다. 영속성 컨텍스트"엔티티를 영구 저장하는 환경"이라는 뜻엔티티 매니저? 영속성 컨텍스트?고객이 요청을 할 때마다 EntityManagerFactory가 엔티티매니저를 생성하고 커넥션을 사용해서 DB를 사용하게 된다. • 영속성 컨텍스트는 논리적인 개념이다.• 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다.• 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.  엔티티의 생명주기비영속 (new/transie..