@Lombok 

🚀 Lombok 라이브러리는 Getter/Setter, ToString 과 같은 반복적인 자바 코드를 컴파일할 때 자동으로 생성해주는 라이브러리

 

어노테이션 설명
@Getter/Setter 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메소드 작성
@ToString toString() 메소드 작성
@ToString(exclude={”변수명”} 원하지 않는 속성 제외한 toString()메소드 작성
@NonNull 해당 변수가 null 체크, NullPointerException 예외 발생
@EqualsAndHashCode equals()와 hashCode() 메소드 작성
@Builder 빌더 패턴을 이용한 객체 생성
@NoArgsConstructor 파라미터가 없는 기본 생성자 생성
@AllArgsConstructor 모든 속성에 대한 생성자 생성
@RequiredArgsConstructor 초기화되지 않은 Final, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성
@Log log 변수 자동 생성
@Value 불변(immutable) 클래스 생성
@Data @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션

 


Entity Mapping 관련 어노테이션

어노테이션 설명
@Entity 클래스를 엔티티로 선언 (JPA에 엔티티 클래스라는 것을 알려줌)
@Table 엔티티와 매핑할 테이블을 지정
@Id 테이블의 기본키에 사용할 속성을 지정
@GeneratedValue 키 값을 생성하는 전략 명시
@Column 필드와 컬럼 매핑
@Lob BLOB, CLOB 타입 매핑
@CreationTimestamp insert 시 시간 자동 저장
@UpdateTimestamp update 시 시간 자동 저장
@Enumerated enum 타입 매핑
@Transient 해당 필드 데이터베이스 매핑 무시
@Temporal 날짜 타입 매핑
@CreateDate 엔티티가 생성되어 저장될 때 시간 자동 저장
@LastModifiedDate 조회한 엔티티의 값을 변경할 때 시간 자동 저장

 

💡 CLOB과 BLOB 의미
     CLOB 이란 사이즈가 큰 데이터를 외부 파일로 저장하기 위한 데이터 타입. 문자형 대용량 파일을 저장하는데 사용
     BLOB 이란 바이너리 데이터를 DB 외부에 저장하기 위한 타입. 이미지, 사운드, 비디오 같은 멀티미디어 데이터를 다룰 때 사용

 


@Column 속성

속성 설명 기본값
name 필드와 매핑할 컬럼의 이름 설정 객체의 필드 이름
unique(DDL) 유니크 제약 조건 설정  
insertable insert 가능 여부 true
updatable update 가능 여부 true
length String 타입의 문자 길이 제약조건 설정 255
nullable(DDL) null 값의 허용 여부 설정. false 설정 시 DDL 생성 시에 not null 제약 조건 추가  
columnDefinition 데이터베이스 컬럼 정보 직접 기술

ex.
@Column(columnDefinition = "varchar(5) default'10' not null")
 
precision, scale(DDL) BigDecimal 타입에서 사용(BigInteger 가능) precision은 소수점을 포함한 전체 자리수이고, scale은 소수점 자리수.
Double과 float 타입에는 적용되지 않음.
 

 

💡 DDL(Data Definition Language)
     테이블, 스키마, 인덱스, 뷰, 도메인을 정의, 변경, 제거할 때 사용하는 언어.
     가령, 테이블을 생성하거나 삭제하는 CREATE, DROP 등이 이에 해당

 


@GeneratedValue

🚀  Entity 클래스는 반드시 기본키를 가져야 함

생성 전략 설명
GenerationType.AUTO(default) JPA 구현체가 자동으로 생성 전략 결정
GenerationType.IDENTITY 기본키 생성을 DB에 위임
ex. MySQL 의 경우 AUTO_INCREMENT를 사용하여 기본키 생성
GenerationType.SEQUENCE DB 시퀀스 오브젝트를 이용한 기본키 생성
@SequenceGenerator를 사용하여 시퀀스 등록 필요
GenerationType.TABLE 키 생성용 테이블 사용. @TableGenerator 필요

 

 

📍   관련글    

2024.02.24 - [Database/MySQL] - [MySQL] 제약조건 | 식별자, 기본키, 복합키, 유니크, 체크

2024.02.24 - [Database/MySQL] - [MySQL] 제약조건 | 일련번호, 시퀀스, AUTO_INCREMENT

 

 

 

 

 

 

* 내용 참고 : 책 '스프링부트 쇼핑몰 프로젝트 with JPA'

+ Recent posts