개발/Jpa
-
양방향 연관관계와 연관관계의 주인개발/Jpa 2023. 8. 25. 02:34
양방향 연관관계와 연관관계의 주인 양방향 매핑 객체와 테이블이 관계를 맺는 차이 객체 연관관계 = 2개 회원 -> 팀 연관관계 1개(단방향) 팀 -> 회원 연관관계 1개(단방향) 테이블 연관관계 = 1개 회원 팀의 연관관계 1개(양방향) 객체의 양방향 관계 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단뱡향 관계 2개다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다 테이블의 양방향 연관관계 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리 MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐 양쪽으로 조인 가능 둘 중 하나로 외래 키를 관리해야 한다. 객체의 두 관계중 하나를 연관관계의 주인으로 정해서 관리를 해야한다 Member 에서 값을 바꿀 수도 있..
-
기본 키 매핑 방법개발/Jpa 2023. 8. 25. 02:14
기본 키 매핑 방법 직접 할당 @Id 만 사용 하면 됨 자동 생성(@GeneratedValue) IDENTITY: 데이터베이스에 위임, MYSQL SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE @SequenceGenerator 필요 TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 @TableGenerator 필요 AUTO: 방언에 따라 자동 지정, 기본값 IDENTITY 전략 기본 키 생성을 데이터베이스에 위임 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용 (예: MySQL의 AUTO_ INCREMENT) JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행 AUTO_ INCREMENT는 데이터베이스에 INSERT SQL을 실행 한 이후에..
-
필드와 컬럼 매핑개발/Jpa 2023. 8. 25. 02:04
필드와 컬럼 매핑 맵핑 어노테이션 @Column 컬럼 매핑 @Temporal 날짜 타입 매핑 @Enumerated enum 타입 매핑 @Lob BLOB, CLOB 매핑 @Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) @Column @Enumerated 자바 enum 타입을 맵핑하는 경우 사용한다 ORDINAL 은 사용하지 말자 (순서를 저장하기 때문에 실제 Enum 코드 변경시 잘못된 데이터를 바라볼 수 있음) @Temporal 날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용 참고: LocalDate, LocalDateTime 사용시 생략 가능 @Lob 데이터베이스 BLOB, CLOB 타입과 매핑 @Lob에는 지정할 수 있는 속성이 없다. 매..
-
데이터베이스 스키마 자동생성 옵션 (hibernate.hbm2ddl.auto)개발/Jpa 2023. 8. 25. 01:26
데이터베이스 스키마 자동생성 옵션 (hibernate.hbm2ddl.auto) create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영 운영 DB에는 사용하면 안됨 validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 자동생성 주의사항 운영 장비에는 절대 create, create-drop, update 사용하면 안됨 개발 초기 단계는 create 또는 update 테스트 서버는 update 또는 validate 스테이징과 운영 서버는 validate 또는 none