@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