김영한(인프런 강의)
-
엔티티 매핑 - 실습 예제를 통한 데이터 중심 설계의 문제점김영한(인프런 강의)/자바 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. 10. 2. 13:33
매핑 어노테이션 정리 아래와같이 auto 옵션을 설정 어노테이션 설명 @Column 컬럼 매핑 @Temporal 날짜 타입 매핑 @Enumerated enum 타입 매핑 @Lob BLOB, CLOB 매핑 @Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) @Column 속성 설명 기본값 name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름 insertable, updatable 등록, 변경 가능 여부 TRUE nullable(DDL) null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. unique(DDL) @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제 약조건을 걸 때 사용한다. colu..
-
엔티티 매핑 - 데이터베이스 스키마 자동 생성김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 9. 29. 17:21
데이터 베이스 스키마 자동 생성 설명 1. DDL을 애플리케이션 실행 시점에 자동 생성 - 테이블, 컬럼 등이 없을 때 자동으로 생성 2. 테이블 중심 -> 객체 중심 3. 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 - DB마다 다른 데이터형을 맞춰서 자동으로 생성 4. 생성된 DDL은 개발 장비에서만 사용 5. 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬 은 후 사용 명령어 종류 2020/09/30 - [DataBase/공통] - DDL, DML, DCL 이란? 속성 API 설정중에 옵션이 있다. 사용법은 아래와 같고 value에는 어떤 값이 들어 가는지 확인해보자 옵션 설명 create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-d..
-
엔티티 매핑 - 객체와 테이블 매핑김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 9. 29. 17:01
객체와 테이블 매핑 1. @Entity 1) @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 2) JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 3) 주의 - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - final 클래스, enum, interface, inner 클래스 사용X - 저장할 필드에 final 사용 X 2. @Table 1) @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블이름 엔티티 이름을 사용 catalog 데이터베이스 catalog 매핑 schema 데이터베이스 schema 매핑 uniqueConstraints (DDL) DDL 생성 시에 유니크 제약 조건 생성 2) 필드와 컬럼 매핑 ..
-
영속성 관리 - 내부 동작 방식김영한(인프런 강의)/자바 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..
-
JPA은무엇인가?김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 9. 28. 12:11
SQL중심의 개발의 문제점 1. CRUD같은 지루한 방식의 연속과 SQL에 의존적인 개발 1) 아래의 코드를 보게 된다면 데이터를 저장한 코드를 가지고 CRUD중심적인 개발 2) 조회 parameter와 결과값을 객체에 저장 public class Member { private String memberId; private String name; ... } INSERT INTO MEMBER(MEMBER_ID, NAME, TEL) VALUES SELECT MEMBER_ID, NAME, TEL FROM MEMBER M UPDATE MEMBER SET … TEL = ? 2. SQL위주의 개발을 하게 된다면 객체지향프로그래밍 개발을 하기 어렵다. 객체지향프로그래밍은? 추상화, 캡슐화, 정보은닉, 상속, 다형성 등..