๐ŸŒง๏ธ ORM/JPA

JPA Auditing์œผ๋กœ ์ƒ์„ฑ์ผ, ์ˆ˜์ •์ผ ์ž๋™ ์ƒ์„ฑ

2022. 6. 25. 22:43
๋ชฉ์ฐจ
  1. Auditing ์ด๋ž€?
  2. ์ƒ์„ฑ์ผ
  3. ์ˆ˜์ •์ผ
  4. JpaAuditing ์ ์šฉ
  5. Test ์‹œ ์ฃผ์˜์‚ฌํ•ญ
  6. REFERENCE
๋ฐ˜์‘ํ˜•

Auditing ์ด๋ž€?

์—”ํ‹ฐํ‹ฐ๋Š” ๋‚˜์ค‘์— ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด์„œ ์ƒ์„ฑ์ผ๊ณผ ์ˆ˜์ •์ผ์„ ํ•„์ˆ˜์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์„ฑ์ผ๊ณผ ์ˆ˜์ •์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ƒ์„ฑ์ผ

public Book saveBook(BookDto bookDto) {
    // BookDto -> Book ๋ณ€ํ™˜
    Book book = ...;

    book.setCreatedAt(LocalDateTime.now());

    ...
}

์ˆ˜์ •์ผ

public Long updateBook(Long bookId, BookDto bookDto) {
    // ์ˆ˜์ • ๋กœ์ง

    book.setModifiedAt(LocalDateTime.now());

    ...
}

์ด๋Ÿฐ์‹์œผ๋กœ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ๋‹จ์ˆœ ๋ฐ˜๋ณต ์ฝ”๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿด ๋•Œ Auditing์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ›จ์”ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

JpaAuditing ์ ์šฉ

@MappedSuperClass
@EntityListners(AuditingEntityListener.class)
public abstract class Test {
    @CreatedDate
    LocalDateTime createdAt;

    @LastModifiedDate
    LocalDateTime modifiedAt;
}

์ด์ œ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ์— ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋„๋ก ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ JpaAuditing์„ ํ™œ์„ฑํ™”๋˜๋„๋ก ์–ด๋…ธํ…Œ์ด์…˜๋งŒ ๋ถ™์—ฌ์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.

@EnableJpaAuditing  // **
@SpringBootApplication
public class Application {
    ...
}

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

Test ์‹œ ์ฃผ์˜์‚ฌํ•ญ

@EnableJpaAuditing์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ตœ์†Œ ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ @WebMvcTest๋ฅผ ํ•˜๋ฉด Entity๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋•Œ๋Š” ๋”ฐ๋กœ @Configuration์ด ๋ถ™์€ ํด๋ž˜์Šค์— ๋ถ„๋ฆฌ์‹œ์ผœ์ฃผ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Configuration
@EnableJpaAuditing
public class AppConfig {

}

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

REFERENCE

  • ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ AWS๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค - ์ด๋™์šฑ
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
  1. Auditing ์ด๋ž€?
  2. ์ƒ์„ฑ์ผ
  3. ์ˆ˜์ •์ผ
  4. JpaAuditing ์ ์šฉ
  5. Test ์‹œ ์ฃผ์˜์‚ฌํ•ญ
  6. REFERENCE
'๐ŸŒง๏ธ ORM/JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • JPA ๋ณตํ•ฉํ‚ค ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ (feat. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์•Œ์•„๋ณด์ž)
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (2)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
JPA Auditing์œผ๋กœ ์ƒ์„ฑ์ผ, ์ˆ˜์ •์ผ ์ž๋™ ์ƒ์„ฑ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.