상세 컨텐츠

본문 제목

[JPA] JPA 어노테이션 활용하여 db에 값 넣기

JPA

by Jjiveloper 2021. 5. 20. 11:37

본문

728x90

1. persistence.xml 파일 옵션


<property name="hibernate.hbm2ddl.auto" value=""/>
→ 애플리케이션 실행 시점에 데이터베이스 테이블 동작 설정!


value에 들어갈 수 있는 값 
create: 기본 테이블 삭제 후 다시 생성 (DROP + CREATE)
create-drop: create와 동일하나 종료시점에 테이블 DROP
update: 변경분만 반영 (운영 DB에는 사용하면 안된다.)
validate: 엔티티와 테이블이 정상 매핑되었는지만 확인한다.
none: 사용하지 않는다.

운영장비에는 절대 create, create-drop, update 사용 x

 

추천 value
개발 초기 단계 : create 또는 update 
테스트 서버 : update 또는 validate 
스테이징, 운영 서버 : validate 또는 none 




2. 매핑


@Column 가장 많이 사용됨
(name="USERNAME") → 실제 DB의 컬럼 명(필드와 매핑할 테이블의 컬럼 이름)
(length= 20) → 길이를 20자로 제한한다.
(nullable= false/true) → false= not null, true = null

@Id
private Long id;

@Column(length = 20, name="USERNAME",nullable=true)
private String name;


@Temporal 날짜타입 매핑
(TemporalType.DATE) 날짜
(TemporalType.TIME) 시간
(TemporalType.TIMESTAMP) 날짜와 시간

set해줄 때는 값에 new Date() 를 해주면 자동으로 시간, 날짜, 날짜와시간 등이 알맞게 입력된다.
java.util.Date를 import할 것!

@Temporal(TemporalType.TIME)
private Date time;
@Temporal(TemporalType.DATE)
private Date date;
@Temporal(TemporalType.TIMESTAMP)
private Date ts;


/***********실제 main에서 사용 예시*************/   
Member member = new Member();
member.setDate(new Date());
member.setTime(new Date());
member.setTs(new Date());

DATE 컬럼에는 년-월-일 , TIME 컬럼에는 해당 시:분:초, TS컬러멩는 DATE+TIME 이 저장된 모습을 볼 수 있다.



@Enumerated 열거형매핑
(EnumType.ORDINAL) 기본값: 순서를 저장
(EnumType.STRING) 열거형 이름을 그대로 저장

/*********ENUM CLASS***********/
public enum MemberType {
	USER, ADMIN
}
/*********ENTITY***********/
@Enumerated(EnumType.STRING)	//꼭 StringType으로 저장. default 값이 index처럼 들어감
 MemberType memberType;
/**********MAIN************/
member.setMemberType(MemberType.ADMIN);


@Transient 해당 필드는 매핑하지 않는다.
애플리케이션에서 DB에는 저장하지 않지만, 애플리케이션에서는 사용하는 필드



@Lob CLOB, BLOB 매핑 시 사용
- CLOB: String, char[], java.sql.CLOB
- BLOB: byte[], java.sql.BLOB
사용시에는 그냥 @Lob해주면 됨



3. 식별자 매핑 어노테이션


@GeneratedValue(strategy = GenerationType.?)
-Id(직접매핑)
1. IDENTITY: 데이터베이스에 위임, MYSQL
2. SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE
  @SequenceGenerator 필요
3. TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용
  @TableGenerator 필요
4. AUTO: 방언에 따라 자동 지정, 기본 값

728x90
반응형

관련글 더보기