Spring Framework/JPA

Spring Framework/JPA

[JPA] 연관관계 매핑, 양방향, 연관관계 주인, mappedBy

목표 객체와 테이블 연관관계의 차이 이해 객체의 참조와 테이블의 외래 키 매핑 이해 단방향, 양방향 이해 다중성 : 다대일, 일대다, 다대다 이해 연관관계의 주인 연관관계가 필요한 이유 객체를 테이블에 맞추어 모델링 (연관관계가 없는 객체 / 사용 X) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String @Column(name = "TEAM_ID") private Long teamId; } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; } 참조 대신에 외래 ..

Spring Framework/JPA

[JPA] Spring JPA 프록시 객체와 지연로딩이란 무엇인가, 사용하는 이유

지연로딩(LAZY Loading)이란 : 지연로딩은 연관된 엔티티를 실제로 사용할 때까지 데이터베이스에서 로딩을 지연시키는 기법입니다. 예를 들어 엔티티 A와 B가 일대다 관계를 가지고 있을 때, A 엔티티를 조회하더라도 B 엔티티를 바로 로딩하지 않고, 실제로 B엔티티의 내용이 필요한 시점에 해당 엔티티를 데이터베이스에 가져오는 방식입니다. 지연로딩의 장점 및 사용하는 이유 : 불필요한 데이터를 미리 로딩하지 않아 메모리를 절약하고, 성능 향상을 이룰 수 있습니다. 주의할 점 지연로딩을 사용하면서 영속성 컨텍스트가 유지되는 시점에서 연관된 엔티티를 로딩하지 않고 사용하려고 할 때, LazyInitializaionException이 발생할 수 있습니다. 영속성 컨텍스트가 사라질 경우, Proxy 엔티티를..

Spring Framework/JPA

[JPA] Spring-JPA 엔티티 값 Update 하기 - save(), 더티체킹(Dirty Checking - set())

JPA를 이용해 update를 구현하는 방법에 대해 설명하고자 합니다. (1) Spring JPA DATA를 이용해 save() 함수에 엔티티의 id값이 담겨있고 엔티티의 변경된 값이 있으면 save() 함수를 통해 업데이트를 할 수 있습니다. 하지만 save() 함수를 통해 모든 값을 변경하지 않고 업데이트하는 경우 변경한 값을 제외한 값들은 null 처리가 되어 업데이트되는 오류가 생길 수 있습니다. (2) 모든 값을 변경하지 않는 경우 변경 감지(더티 체킹)을 통해 업데이트를 할 수 있습니다. 1. save() 를 통해 기존의 엔티티 값 수정하기 엔티티의 모든 속성값을 변경해 주어야 오류가 생기지 않습니다. // 기존 엔티티 조회 후 수정 EntityA existingEntity = reposito..

Spring Framework/JPA

[스프링부트 API 개발] API 개발 1 - DTO로 데이터 전달하기, 지연 로딩, 컬렉션 최적화

[인프런] 김영한님의 실전 스프링부트와 JPA 활용 2편을 수강하면서 공부한 내용을 바탕으로 작성하였습니다. 스프링부트를 통해 API를 개발할 때 요청(Request)하는 값과 반환(Response) 받는 값을 엔티티가 아닌 DTO로 받는 방법에 대해 정리하고자 합니다. DTO로 데이터 전달하기 Entity 엔티티를 DTO로 반환하지 않고 그대로 데이터를 주고 받을 경우 여러 문제점이 있습니다. 1) 엔티티에 프레젠테이션 계층을 위한 로직이 추가됩니다. => 엔티티를 코드를 작성할 때 사용자에게 보여지는 화면에 맞게 개발해야 하는 문제. 2) 각 엔티티를 위한 API가 다양하게 만들어지는데, 한 엔티티에 각각의 API를 위한 모든 요청 요구사항을 담기 어렵습니다. 3) 엔티티의 속성이 변경되면 API 스..

kylo
'Spring Framework/JPA' 카테고리의 글 목록 (2 Page)