나를 기록하다
article thumbnail
[TIL-6 / 230621] JPA 다양한 연관관계 매핑
TIL 2023. 6. 21. 22:35

1. 연관관계 매핑시 고려사항 3가지 1) 다중성 다대일: @ManyToOne (가장 많이 사용) 일대다: @OneToMany (필요할 때 사용) 일대일: @OneToOne (가끔 사용) 다대다: @ManyToMany (실무에서 사용하지 않음) JPA의 어노테이션은 DB와 매핑하기 위해 존재. 애매할 때는 반대쪽을 생각하라. 회원과 팀의 관계가 헷갈리면, 팀과 회원의 관계를 생각하라. 2) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 3) 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A→B, B→A 처럼 참조가 2군데 존재 객..

article thumbnail
[TIL-5 / 230620] JPA 연관관계 매핑 기초, 연관관계의 주인
TIL 2023. 6. 20. 23:09

연관관계 매핑 기초 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 1. 연관관계가 필요한 이유 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 테블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member..

article thumbnail
[TIL-3 / 230614] 다형성, JPA의 기본키 매핑
TIL 2023. 6. 14. 23:40

다형성(polymorphism) 의미: 외부에서 보았을 땐 하나이나, 외부의 상황에 따라 여러 가지 형태를 가질 수 있는 능력 기능: 하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것. 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성 예시: 오버로딩, 레퍼런스 형변환 규칙 부모의 레퍼런스는 자식의 인스턴스를 가리킬 수 있다. 역은 성립하지 않는다. 이유: 부모 클래스와 자식 클래스가 있을 때, 개념적으로 부모 클래스가 더 크기 때문 참조변수의 형변환 서로 상속관계에 있는 타입간의 형변환만 가능 자손 타입에서 조상타입으로 형변환하는 경우, 형변환 생략가능 자손타입 → 조상타입(Up-casting) : 형변환 생략가능 / 언제나 가능 자손타입 ← 조상타입(Down-casting) :..

article thumbnail
[TIL-2 / 230613] Java의 제어자, JPA 엔티티 매핑
TIL 2023. 6. 13. 23:55

클래스패스(classpath) 설정 java -cp {~/Desktop/DEV.PRAO/eclipse-workspace/out/production/eclipse-workspace} fullPathName import문 사용할 클래스가 속한 패키지를 지정하는데 사용 import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다. import문을 생략 가능한 경우 java.lang 패키지는 자동으로 import 된다 → java.lang패키지의 클래스는 Import하지 않고도 사용할 수 있다. 나랑 같은 패키지에 속한 클래스는 import문 생략 가능 부모 패키지만 import하면 자식 패키지도 사용 가능할까? → 아니다. 자식 패키지는 따로 import 하여야 한다. import 패키지명.클래스명..

article thumbnail
[TIL-1 / 230612] JPA 영속성 컨텍스트
TIL 2023. 6. 12. 22:46

영속성 컨텍스트란 무엇인가? JPA를 이해하는데 가장 중요한 용어이다. 뜻: 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); → 영속성 컨텍스트를 이용해서 DB에 저장하는 것이 아니라 영속성 컨텍스트라는 곳에 저장하는 것 영속성 컨텍스트는 논리적인 개념으로, 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. 엔티티의 생명주기 비영속(new/transient): 객체를 생성한 상태(영속성 컨텍스트와 관계 x) 영속(managed): 객체를 저장한 상태(영속성 컨텍스트에 관리되는 상태) 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리도니 상태 삭제(removed): 삭제된 상태 [예시] 1차 캐시에서 조회 package hellojpa..

article thumbnail
[JPA] JPA 모르는 개념 정리
Java/JPA 2023. 4. 7. 15:44

목차getter and setterDAO(Data Acess Object)개발 환경 관련 도구mavenMaven의 주요 특징hibernate캐싱(caching)이란?라이브러리(library)라이브러리의 형태라이브러리의 기능라이브러리의 장단점Java의 라이브러리JPA 개발 시작클래스와 테이블 매핑어노테이션데이터베이스 방언하이버네이트가 제공하는 데이터베이스 방언애플리케이션 개발엔티티 매니저, 엔티티 매니저 팩토리트랜잭션 관리비즈니스 로직JPQL(Java Persistence Query Language)영속성 관리엔티티 매니저 팩토리와 엔티티 매니저영속성 컨텍스트(persistence context)란?엔티티의 생명주기엔티티의 4가지 상태비영속영속준영속삭제영속성 컨텍스트의 특징엔티티 조회엔티티 삭제플러시플러시..

profile on loading

Loading...