Spring JPA[N:1,1:N]
다대일 [N:1] 다대일은, 한쪽 객체가 N이고 반대쪽 객체가 1인 연관관계 입니다. 다대일 [N:1] - 단방향 Member.class @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name;...
다대일 [N:1] 다대일은, 한쪽 객체가 N이고 반대쪽 객체가 1인 연관관계 입니다. 다대일 [N:1] - 단방향 Member.class @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name;...
양방향 연관관계 양방향 연관관계에서는 양쪽 엔터티 간의 관계를 맺어주기 위해 두 엔터티 간에 매핑이 필요합니다. 이 때 한 엔터티가 다른 엔터티와의 관계를 주도하는 주인 역할을 하게 되는데, 이것을 연관관계의 주인이라고 합니다. 양방향 연관관계에서는 주인을 명시적으로 지정해주어야 하는데, 이때 사용되는 속성이 mappedBy입니다. 코드 예제 M...
연관관계 연관관계랑 객체들 간의 관계를 나타내는 개념으로 일종의 연결고리라고 생각하면 됩니다. 즉, 아파트에 살고있으면, 나와 내 이웃들간의 관계라고 생각하면 됩니다. 각각의 아파트 주민들은 서로에게 연결되고 있고, 이로인해 이웃 간에 상호작용이 발생할 수 있습니다. 이러한 관계를 연관관계라고 생각하시면 됩니다. 연관관계에는 주로 2종류가 있습...
Entity Mapping 기본키 매핑 Spring에서 기본키 매핑은 JPA을 통해 이루어집니다. @Entity(name = "testUser") @Table public class testUser { @Id @Column(name = "id") private Long id; @Column(name = "user_name...
Entity Mapping 필드와 컬럼 매핑 JPA에서 엔티티 클래스와 필드와 DB 테이블의 컬럼 간의 매핑은 @Column어노테이션을 사용하여 정의합니다. @Entity(name = "testUser") @Table public class testUser { @Id @Column(name = "id") private Long i...
Entity Mapping 객체와 테이블 매핑 @Entity(name = "testUser") @Table public class testUser { @Id @Column(name = "id") private Long id; @Column(name = "user_name") private String name; }...
Schema DB에서 테이블, 뷰, 인덱스 등 과 같은 객체들의 집합을 나타내는 방법입니다. DB내의 여러 사용자들 간의 DB객체의 소유 및 구조를 정의하는 것 입니다. JPA Schema JPA에서는 DDL을 애플리케이션 실행 시점에 자동으로 생성합니다. 이는 테이블 중심이 아닌 객체중심입니다. DB방언을 활용해서 DB에 맞는 적절한 DDL을...
영속성 컨텍스트 1차 캐시 영속성 컨텍스트는 객체(Entity)를 처음으로 로딩할 때 해당 객체(Entity)에 대한 데이터를 보관하며, 트랜잭션 내에서 이를 관리하는 상태에 있습니다. 이 특성으로 1차 캐시를 활용할 수 있습니다. 1차 캐시는 영속성 컨텍스트 내부에 존재하며, JPA에서 객체(Entity)를 조회할 때 해당 객체(Entity)를 ...
영속성 컨텍스트 JPA에서는 테이블과 매핑되는 엔티티 객체정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관합니다. 여기서 영속성 컨텍스트란, 엔티티를 영구 저장하는 환경이라는 뜻을 가지고 있습니다. 영속성 컨텍스트는 논리적인 개념이여서 눈에 보이지가 않습니다. 또한 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있습니다...
JPA 간단한 프로젝트를 진행하면서 SQL문을 일일이 작성하고 관리하는 것이 번거로웠습니다. 특히 중복된 SQL문이 늘어남에 따라 코드의 양이 증가하고 가독성이 떨어지는 문제가 발생했습니다. 이런 어려움들을 극복하기 위해 ORM(Object-Relational Mapping) 기술인 JPA를 도입하게 되었습니다. JPA? JPA란 Java Pers...