JPA 연관관계 매핑 - 양방향 연관관계와 연관관계의 주인
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 양방향 연관관계와 연관관계의 주인 - 기본 JPA 연관관계 매핑 - 단방향 연관관계 JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 단방향 연관관계 예제 시나리오 회원과 팀이 존재한다. 회원은 하나의 팀에만 소 devhan.tistory.com 이전 글에서 배운 단방향 연관관계와 양방향 연관관계의 차이점은 아래와 같다. // Member 객체로 Team을 가져올 수 있다. Member findMember = em.find(Member.class, member.getId()); Team findTeam = findMe..
JPA 연관관계 매핑 - 단방향 연관관계
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 단방향 연관관계 예제 시나리오 회원과 팀이 존재한다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. 객체를 테이블화한 모델링 객체 클래스 생성(Member) @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @Column(name = "TEAM_ID") private Long teamId; ...getter/setter 생략 } 객체 클래스 생성(Te..
JPA 엔티티 매핑 - 요구사항 분석과 기본 매핑 (실전 예제)
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 요구사항 분석과 기본 매핑 요구사항 분석 회원은 상품을 주문할 수 있다. 주문 시 여러 종류의 상품을 선택할 수 있다. 도메인 모델 분석 회원 - 주문 : 회원은 여러 번 주문할 수 있다 - 일대다 주문 - 상품 : 주문할 때 여러 상품을 선택할 수 있고, 같은 상품도 여러 번 주문될 수 있다. 주문 상품이라는 모델을 만들어서 다대다 관계를 일대다, 다대일 관계로 만든다. 테이블 설계 엔티티 설계 엔티티 클래스 생성(실습) Member @Entity public class Member { @Id @GeneratedValue @Column(name="MEMBER_ID") private ..
JPA 엔티티 매핑 - 기본 키 매핑
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 기본 키 매핑 기본키의 경우엔 직접 할당과 자동생성 방법이 있다. 직접 할당은 여태 써온 @Id 애노테이션을 사용하면 된다. 직접 할당 @Id // Member.class @Id private Long id; // 실행 클래스 ...생략 Member member = new Member(); member.setId(1000L); // 기본키 직접 할당 member.setUsername("B"); ...생략 이렇게 개발자가 직접 PK 값을 할당해주는 경우 @Id만 사용하면 된다. 자동 생성(@GeneratedValue) 자동 생성의 경우 IDENTITY, SEQUENCE, TABLE, AU..
JPA 엔티티 매핑 - 필드와 컬럼 매핑
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 필드와 컬럼 매핑 @Column 컬럼을 매핑할 때 사용한다. name 속성 필드의 이름과 DB 테이블 컬럼의 이름이 다를 시 사용된다. 필드와 매핑할 테이블의 컬럼 이름을 적어주면 된다. 만약 필드의 이름과 매핑 할 DB 컬럼의 이름이 같으면 생략하면 된다. @Column(name = "name") private String username; insertable, updatable 속성 해당 필드에 변경이 생겼을 때 이 컬럼의 변경된 내용을 INSERT 혹은 UPDATE 할거냐는 속성이다. 즉 등록, 변경 가능 여부를 설정하며 기본값은 TRUE이다. @Column(name = "name..
JPA 엔티티 매핑 - 객체와 테이블 매핑, 데이터베이스 스키마 자동 생성
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 객체와 테이블 매핑 대표적인 엔티티 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하며 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. 주의! 기본 생성자가 필수(접근제한자는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 불가 저장할 필드에 final 사용 불가 JPA는 엔티티 객체를 생성할 ..
JPA 영속성 관리 - 내부 동작 방식 준영속 상태
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 준영속 상태 영속 상태가 되는 방법 em.persist() - 저장 find() - 조회 준영속 준영속 상태란 영속성 컨텍스트가 관리하는 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)된 것을 준영속 상태라 한다. 준영속 상태가 되면 영속성 컨텍스트가 제공하는 기능(변경 감지 등..)을 사용하지 못한다. 준영속 상태로 만드는 방법 em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 // 영속 Member member = em.find(Member.class, 150L); member.setName("AAAAA"); // 준영속 em.detach(memb..
JPA 영속성 관리 - 내부 동작 방식 플러시
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 플러시(flush) 플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것을 말한다. Transaction commit이 일어날 때 flush가 동작하면서 쓰기 지연 SQL 저장소에 담아놨던 SQL들이 DB에 전달된다. 그러면서 영속성 컨텍스트의 변경 사항들이 DB에 동기화된다. 플러시 동작 과정 변경 감지(Dirty Checking) 수정된 Entity를 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리) ! flush == commit()이 아니다. flush -> commit()이 맞는 표현이다. 영속성 컨텍스..
JPA 영속성 관리 - 영속성 컨텍스트
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. JPA 영속성 관리 - 영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 이 전 포스팅에서도 얘기했었는데 다시 짧게 말해보자면.. EntityManagerFactory EntityManager를 생성 EntityManager 내부적으로 DB 커넥션 풀을 사용해서 DB를 사용하게 된다. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어로, '엔티티를 영구 저장하는 환경'이라는 뜻이다. 이전 포스팅에서 DB에 데이터를 저장하기 위해 em.persist(객체) 코드를 사용했었는데 사실 DB에 바로 저장하는게 아니라 엔티티 매니저를 통해 엔티티를 영속성 컨텍스트라는 곳에 저장한다. 전에..
JPA 시작하기 - Hello JPA 시작하기 (프로젝트 생성 및 개발)
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. Hello JPA 프로젝트 생성 Language : JAVA 8 이상(8 권장) DB : H2 Database - http://www.h2database.com/ 최고의 실습용 DB 가벼움 (1.5M) 웹용 쿼리툴 제공 MySQL, Oracle DB 시뮬레이션 기능 시퀀스, AUTO INCREMENT 기능 지원 Build Tool : Maven 자바 라이브러리, 빌드 관리 라이브러리 자동 다운로드 및 의존성 관리 최근에는 그레이들(Gradle)을 많이 사용하지만 강의에서는 아직도 Maven을 많이 사용하기 때문에 Maven으로 진행 IntelliJ에서 프로젝트 생성 pom.xml dep..
JPA 소개
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. JPA 소개 JPA란? Java Persistence API의 줄임말이다. 자바 진영의 ORM 기술 표준이다. Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다. ORM 프레임워크가 중간에서 매핑 대중적인 언어에서는 대부분 ORM 기술이 존재한다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. 동작 과정 JAVA 애플리케이션에서 JPA API 호출 JPA는 JDBC API 호출 JDBC는 SQL 생성 또는 실행 DB에서 결과를 반환 받음 JPA 동작 - 저장 이 동작 과정에서 제일 중요한 부분..