JPA 11

JPA시작(11)_다양한 연관관계 매핑(실전예제 공부)

주문(Order) 과 배송(Delivery) (일대일 매핑) 카테고리(Category) 와 상품(Item) (다대다 매핑) 주문(Order) 과 상품(Item) 은 다대다 관계 -> OrderItm(주문상품) 으로 연결해준다. 회원(Member) 엔티티 import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; private String city; private String street; private String zi..

JPA 2021.06.09

JPA시작(10)_연관관계 매핑(N:1 / 1:N 양방향)

양방향 객체 연관관계 회원 -> 팀 (Member.team) 팀 -> 회원 (Team.members) 참고 > 데이터베이스 테이블은 외래키 하나로 양방향으로 조회가 가능하다. 양방향 객체 연관관계 매핑 양방향 연관관계를 매핑해봅시다!!!!!!!!! 매핑한 회원 엔티티 @Entity public class Member { @Id @Column (name = "MEMBER_ID") private String id; private String username; //연관관계매핑 @ManyToOne @JoinColumn (name = "TEAM_ID") private Team team; //연관관계설정 public void setTeam(Team team) { this.team = team; } //Getter,..

JPA 2021.06.08

JPA시작(9)_연관관계 매핑(N:1, 단방향) / 연관관계 사용(등록, 수정, 삭제, 조회)

1. 연관관계 매핑 (다대일, 단방향매핑) JPA를 사용하여 객체끼리의 연관관계, 테이블끼리의 연관관계가 아닌!! 객체와 테이블을 매핑해보자!! 매핑한 회원엔티티 @Entity public class Member { @Id @Column (name = "MEMBER_ID") private String id; private String username; //연관관계매핑 @ManyToOne @JoinColumn (name = "TEAM_ID") private Team team; //연관관계설정 public void setTeam(Team team) { this.team = team; } //Getter, Setter ... } 매핑한 팀 엔티티 @Entity public class Team { @Id @Co..

JPA 2021.06.08

JPA시작(8)_객체 연관관계 / 테이블 연관관계

객체 연관관계 vs 테이블 연관관계 객체는 참조(주소)로 연관관계를 맺는다 테이블은 외래키로 연관관계를 맺는다. 연관된 데이터를 조회할때 객체는 참조( a.getB().getC() ) 를 사용하고, 테이블은 join(조인)을 사용한다. 참조를사용하는 객체의 연관관계는 단방향이다 A -> B (a,b) 외래키를 사용하는 테이블의 연관관계는 양방향이다. A join B 가 가능하면 B join A도 가능하다 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야한다. A -> B (a,b) B -> A (b,a) 1. 객체 연관관계 순수한 객체 연관관계 ( JPA를 사용하지 않은 순수한 회원클래스, 팀 클래스) public class Member { private String id; private St..

JPA 2021.06.08

JPA시작(7)_필드와 컬럼 매핑_속성에 따른 DDL 생성확인 @Column, @Enumerated, @Temporal, @Lob, @Transient, @Access

@Column 객체필드를 테이블 컬럼에 매핑한다. ▼ nullable (DDL 생성기능) @Column (nullable = false) private String data; //생성된 DDL data varchar(255) not null ▼ unique (DDL 생성기능) @Column (unique = true) private String username; //생성된 DDL alter table Tablename add Constraint UK_Xxx unique (username) ▼ columnDefinition (DDL 생성기능) @Column (columnDefinition = "varchar(100) default 'EMPTY'") private String data; //생성된 DDL d..

JPA 2021.06.07

JPA시작(6)_기본키 매핑 (직접할당, 자동생성)

JPA가 제동하는 데이터베이스 기본키 생성 전략은 다음과 같다. 직접할당 : 기본키를 애플리케이션에서 직접할당 자동생성 : 대리키 사용방식 (IDENTITY, SEQUENCE, TABLE) 기본키 직접할당 em.persist()로 엔티티를 저장하기 전에 애플리케이션에서 기본키를 직접 할당하는 방법 Board board = new Board(); board.setId("id1") //기본키 직접 할당 em.persist(board); 기본키 자동생성 1) IDENTITY 전략 기본키 생성을 데이터베이스에 위임하는 전략.. CREATE TABLE BOARD ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, DATA VARCHAR(255) ); INSERT INTO BOARD(..

JPA 2021.06.07

JPA시작(5)_데이터베이스 스키마 자동생성

JPA는 데이터베이스 스키마 자동생성 기능을 제공한다. H2 스키마에 직접 CREATE 할 필요가 없다는 말!! ★데이터베이스 스키마 자동생성 방법★ ↓↓↓ 기존 회원엔티티 클래스를 이용해서 스키마를 자동생성할꺼에요 ↓↓↓ https://baejiyoung.tistory.com/5 JPA시작(4)_다양한 매핑 사용 @Enumerated, @Temporal, @Lob 회원관리 프로그램에 요구사항을 추가해보자. 회원은 일반 회원과 관리자로 구분해야함 회원가입일과 수정일이 있어야함 회원을 설명할 수 있는 필드가 있어야함. 길이제한 없음 package jpabook.s baejiyoung.tistory.com 1) persistence.xml 에 속성추가 참고> 이 속성을 추가하면 콘솔에서 테이블생성 DDL을 ..

JPA 2021.06.07

JPA시작(4)_다양한 매핑 사용 @Enumerated, @Temporal, @Lob, @Column, @UniqueConstraint

회원관리 프로그램에 요구사항을 추가해보자. 회원은 일반 회원과 관리자로 구분해야함 회원가입일과 수정일이 있어야함 회원을 설명할 수 있는 필드가 있어야함. 길이제한 없음 회원이름은 필수로 입력, 10자를 초과하면 안된다 package jpabook.start; import javax.persistence.*; import java.util.Date; @Entity @Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"} )}) public class Member { @Id @Column(name = "ID") private String id; @Colum..

JPA 2021.06.07

JPA시작(3)_애플리케이션개발_기초편

객체 매핑완료!! persistence.xml 로 JPA 설정도 완료 했다면 !! 이제 JPA 애플리케이션을 개발해보자.. 코드는 크게 3부분으로 나뉘어있다 엔티티 매니저 설정 트랜잭션 관리 비즈니스 로직 JpaMain.java package jpabook.start; import javax.persistence.*; import java.util.List; /** * @author holyeye */ public class JpaMain { public static void main(String[] args) { //엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); EntityManage..

JPA 2021.06.07

JPA시작(2)_객체 매핑방법_@Entity, @Table, @Id, @Column, persistence.xml 설정

h2 실행 > 회원테이블 만들기 CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, --아이디(기본 키) NAME VARCHAR(255), --이름 AGE INTEGER NOT NULL, --나이 PRIMARY KEY (ID) ) 회원클래스 작성하기 package jpabook.start; import javax.persistence.*; //jpa가 제공하는 매핑어노테이션 추가 @Entity @Table(name="MEMBER") public class Member { @Id @Column(name="ID") private String id; @Column(name="NAME") private String username; //매핑 정보가 없는필드 private Int..

JPA 2021.06.07