@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'
'Spring & Spring Boot' 카테고리의 다른 글
JpaRepository method, Query method (0) | 2024.07.31 |
---|---|
spring boot 에서 h2 database 사용하기 (IntelliJ Ultimate) (0) | 2024.07.26 |
[Spring Boot] 댓글 등록 · 수정 · 삭제 (0) | 2024.06.07 |
[Spring Boot] 비동기처리와 Axios, 댓글 목록 처리 (1) | 2024.06.03 |
[Spring Boot] 댓글 컨트롤러 계층 구현 (0) | 2024.06.01 |