๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring๐Ÿƒ

Spring Data JPA : Auditing & HATEOAS

728x90

์ถœ์ฒ˜ : ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

 

1. Auditing

@CreatedDate
private Date created;

@LastModifiedDate
private Date updated;

@CreatedBy
@ManyToOne // ๊ณ„์ • ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ๋Š”๋‹ค
private Account createdBy;

@LastModifiedBy
@ManyToOne
private Account updatedBy;

์ ์šฉ ๋ฐฉ๋ฒ•

1. Applicaton ์ƒ๋‹จ์— @EnableJpaAuditing

2. ์—”ํ‹ฐํ‹ฐ(TimeStamped) ํด๋ž˜์Šค ์œ„์— @EntityListeners(AuditingEntityListener.class) ์ถ”๊ฐ€

 

cf) @MappedSuperclass : ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํ•„๋“œ๊ฐ’์ด ์ƒ์†๋  ๊ฒฝ์šฐ์— ๊ทธ ํ•„๋“œ ๊ฐ’๋„ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๊ด€๋ฆฌ๋ฅผ ๋ฐ›๋Š” ์˜์†์„ฑ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

3. AuditorAware ๊ตฌํ˜„์ฒด ๋งŒ๋“ค๊ธฐ :

1) createdAt, ModifiedAt์€ ๊ตฌํ˜„์ฒด ์—†์ด ๋™์ž‘ํ•˜์ง€๋งŒ, createdBy, modifiedBy๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

2) SpringSecurity์˜ SecurityContextHolder์—์„œ userDetailsImpl์„ ์‚ฌ์šฉํ•˜์—ฌ user ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋„ฃ์–ด์ค€๋‹ค.

4. @EnableJpaAuditing์— AuditorAware ๋นˆ ์ด๋ฆ„ ์„ค์ •ํ•˜๊ธฐ

ex : @EnableJpaAuditing(auditorAwareRef = "userAuditorAware")

 

Auditing์˜ ํ•„๋“œ ๊ฐ’์ธ ์ƒ์„ฑ์ผ์‹œ, ์ƒ์„ฑ์ž, ์ˆ˜์ •์ผ์‹œ, ์ˆ˜์ •์ž๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ์˜์†์„ฑ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ €์žฅํ•œ๋‹ค

Auditing์˜ ์‹œ์  ์ง€์ • : ์—”ํ‹ฐํ‹ฐ ๋ผ์ดํ”„ ์‚ฌ์ดํด์ธ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๋‹จ๊ณ„ ์ค‘ ์–ธ์ œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

~ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ๋ฉ”์†Œ๋“œ์— ๋ถ™์ด๋Š” @PostConstruct์˜ ์›๋ฆฌ์™€ ๊ฐ™๋‹ค

์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ : @PrePersist, @PostPersist

์—”ํ‹ฐํ‹ฐ ์ˆ˜์ • : @PreUpdate, @PostUpdate

์—”ํ‹ฐํ‹ฐ ์‚ญ์ œ : @PreRemove, @PostRemove

2. HATAOAS

์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ํ•˜์ดํผ ๋ฏธ๋””์–ด๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ

Http ์‘๋‹ต์— ๋“ค์–ด๊ฐ€๋Š” ์ž์› ๋˜๋Š” ๋‹ค๋ฅธ ์ƒํƒœ๋‚˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1) ์˜์กด์„ฑ ์ถ”๊ฐ€

2) API ๋ฆฌ์†Œ์Šค์— ๋งํฌ ์ถ”๊ฐ€

3) ๋งํฌ ๊ณตํ†ตํ™” : ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด RepresentationModelAssembler ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•ด ์ค‘๋ณต์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค

 

 

 

 

 

 

728x90