본문 바로가기

💻Dev/JPA5

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