spring boot
-
고급매핑 - @MappedSuperclass김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 22. 12:10
@MappedSuperclass 아래와 같이 공통 매핑 정보가 필요 할 때 사용함 1. 특징 1) 공통 매핑 정보가 필요할 때 사용(id, name) 2) 상속관계 매핑X 3) 엔티티X, 테이블과 매핑X 4) 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공 5) 조회, 검색 불가(em.find(BaseEntity) 불가) 6) 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장 7) 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할 8) 주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통 으로 적용하는 정보를 모을 때 사용 9) @Entity 클래스는 엔티티나 @MappedSuperclass로 지 정한 클래스만 상속 가능 2. 코드 @Entity p..
-
고급 매핑 - 상속관계 매핑김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 20. 14:07
상속관계 매핑 1. 정리 1) 관계형 데이터베이스는 상속 관계X 2) 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 3) 상속관계 매핑 상속관계 매핑이란? 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 2. 사용 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") 엔티티 이름은 수정이가능하다(DTYPE) Item의 컬럼명 @DiscriminatorValue(“XXX") 상위 클래스에 넣을 이름 이름은 수정이 가능하다 기본 옵션은 엔티티 이름이다(클래스 이름)..
-
연관관계 매핑 기초 - 실습김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 8. 15:45
테이블 구조 객체 구조 코드 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; private int age; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @OneToMany @JoinColumn(name = "member") private List orders = new ArrayList(); Getter(), Setter() ... } @Entity @Table(name = "ORDERS") public class Order { @Id @..
-
연관관계 매핑 기초 - 양방향 연관관계김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 7. 15:30
객체와 테이블이 관계를 맺는 관계 1. 양방향 객체 연관관계 1) 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개다. 2) 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어 야 한다. - A -> B (a.getB()) - B -> A (b.getA()) class A { B b; } class B { A a; } 2. 테이블 연관관계 1) 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리 2) MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐 (양쪽으로 조인할 수 있다.) - 아래와 테이블 관계처럼 둘중 하나로 왜래 키를 관리해야 한다. SELECT * FROM MEMBER M JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID S..
-
엔티티 매핑 - 실습 예제를 통한 데이터 중심 설계의 문제점김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 5. 16:36
요구 사항 1) 회원은 상품을 주문할 수 있다. 2) 주문 시 여러 종류의 상품을 선택할 수 있다. 기능 목록 회원 기능 회원등록 회원조회 상품 기능 상품등록 상품수정 상품조회 주문 기능 상품주문 주문내역조회 주문취소 도메인 모델 분석 1) 회원과 주문의 관계 - 회원은 여러 번 주문할 수 있다. (일대다) 2) 주문과 상품의 관계 - 주문할 때 여러 상품을 선택할 수 있다. 반 대로 같은 상품도 여러 번 주문될 수 있다. 주문상품 이라는 모델 을 만들어서 다대다 관계를 일다대, 다대일 관계로 풀어냄 테이블 설계 엔티티 설계와 매핑 데이터 중심 설계의 문제점 1) 위의 방식은 객체 설계를 테이블 설계에 맞춘 방식 2) 테이블의 외래키를 객체에 그대로 가져옴 3) 객체 그래프 탐색이 불가능 4) 참조가 없..
-
엔티티 매핑 - 기본키 매핑김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 5. 12:20
기본 키 매핑방법 1. 직접할당(@ID) @Id private Long id; 2. 자동생성(@GeneratedValue) @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 속성 이름 IDENTITY 데이터베이스에 위임(자동할당), MYSQL SEQUENCE 데이터베이스 시퀀스 오브젝트 사용, ORACLE - @SequenceGenerator 필요 TABLE 키 생성용 테이블 사용, 모든 DB에서 사용 - @TableGenerator 필요 AUTO 방언에 따라 자동 지정, 기본값 기본적인 자동생성 속성은 위와같으며 자세히 알아보자 자동생성 속성 특징 1. IDENTITY 전략 @Entity public class Member { @..
-
영속성 관리 - 내부 동작 방식김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 9. 29. 12:07
JPA 에서 중요한 것 2가지 1. 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 2. 영속성 컨텍스트 위 2가지인데 이번 글에서는 영속성 컨텍스트를 볼 것이다. 영속성 컨텍스트를 보기 전 JPA동작 과정을 알아야한다. 특히 엔티티 매니저 팩토리와 엔티티 매니저를 확인해 보자. 영속성 컨텍스트란? 1. JPA를 이해하는데 가장 중요한 용어 2. "엔티티를 영구 저장하는 환경"이라는 뜻 3. EntityManager.persist(entity); - DB에저장한다는 뜻이 아니다. - 엔티티를 영속성 컨텍스트에 저장한다는 뜻 엔티티매니저와 영속성 컨텍스트의 매핑 관계 1. J2SE 환경 - 엔티티 매니저와 영속성 컨텍스트가 1:1 - 엔티티 매니저와 영속성 컨텍스트가 ..
-
JPA 세팅 및 기본 실습김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 9. 28. 14:32
JPA 개발 세팅 1. 사용 DB는 H2를 사용 1) http://www.h2database.com/ 2) 최고의 실습용 DB 3) 가볍다.(1.5M) 4) 웹용 쿼리툴 제공 5) MySQL, Oracle 데이터베이스 시뮬레이션 기능 6) 시퀀스, AUTO INCREMENT 기능 지원 2. Maven 사용 1) https://maven.apache.org/ 2) 자바 라이브러리, 빌드 관리 3) 라이브러리 자동 다운로드 및 의존성 관리 4) 최근에는 그래들(Gradle)이 점점 유명 3. 프로젝트 생성 4. JPA 설정하기 - persistence.xml 1) JPA 설정 파일 2) /META-INF/persistence.xml 위치 3) persistence-unit name으로 이름 지정 4) jav..