Spring

[Spring] @PrePersist์™€ @PreUpdate

2024. 3. 16. 04:18
๋ชฉ์ฐจ
  1. ๐ŸŒฑ @PrePersist ๋ž€?
  2. ๐ŸŒฑ @PreUpdate ๋ž€?
  3. ๐Ÿซง ์‚ฌ์šฉ ์‹œ ์œ ์˜ํ•  ์ 
  4. ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์‚ฌ์šฉ ์ฝ”๋“œ

 

ํ•˜๋“œ์ฝ”๋”ฉ๊ณผ ์ค‘๋ณต์„ ์ง€์–‘ํ•˜๊ณ ์ž @PrePersist, @PreUpdate ์‚ฌ์šฉ์„ ๋Š˜๋ฆฌ๊ณ  ์žˆ๋‹ค. 

 

๐ŸŒฑ @PrePersist ๋ž€?

JPA ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋น„์˜์† ์ƒํƒœ์—์„œ ์˜์† ์ƒํƒœ๊ฐ€ ๋˜๋Š” ์‹œ์ ์— ์‹คํ–‰๋œ๋‹ค. 

์ฆ‰, ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๊ธฐ ์ „์— JPA Provider์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

๐ŸŒฑ @PreUpdate ๋ž€?

์˜์† ์ƒํƒœ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ด์ „์— ์‹คํ–‰๋œ๋‹ค.

์ฆ‰, ์—”ํ‹ฐํ‹ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™๊ธฐํ™”๋˜๊ธฐ ์ „์— JPA Provider์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

๐Ÿซง ์‚ฌ์šฉ ์‹œ ์œ ์˜ํ•  ์ 

  • ์ ์ ˆํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋กœ์ง์˜ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
    • ๋ณต์žกํ•œ ๋กœ์ง์€ @PrePersist, @PreUpdate ๋‚ด์—์„œ ํ”ผํ•œ๋‹ค.
  • ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ”ผํ•œ๋‹ค.
  • ์—”ํ‹ฐํ‹ฐ์˜ ์ƒํƒœ ๋ณ€ํ™”์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.
  • ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์‚ฌ์šฉ ์ฝ”๋“œ

 

๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํšŒ์› ์—”ํ‹ฐํ‹ฐ์— ์‹ ๊ณ  ํšŸ์ˆ˜, ํƒˆํ‡ด ์—ฌ๋ถ€๋“ฑ์ด ํฌํ•จ๋˜์—ˆ์–ด์•ผ ํ–ˆ๋‹ค. 

๋”ฐ๋ผ์„œ ํšŒ์› ๊ฐ€์ž…์„ ํ•  ๋•Œ๋งˆ๋‹ค ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๊ฐ’์„ ์ง€์ •ํ•ด์„œ ๋„ฃ์—ˆ์—ˆ๋Š”๋ฐ, ์ด๊ฑธ @PrePersist๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

 

        Member member = Member.builder()
                .email(joinReqDto.getEmail())
                .password(joinReqDto.getPassword())
                .nickname(joinReqDto.getNickname())
                .isDeleted(false)
                .reportedCount(0)
                .build();

        memberRepository.save(member);

 

์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ์„ ํ•ด์„œ ์ž‘์„ฑ์„ ํ–ˆ์—ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ํ•œ ๋ฒˆ๋งŒ ๊ฐ€์ž…ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ดœ์ฐฎ๋‹ค๊ณ  ๋А๋‚„ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ˆ˜์ •ํ•  ๋•Œ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ๋„ ํ•˜๋ฉฐ ๊ฒŒ์‹œ๊ธ€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ฑ๊ณผ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•œ๋ฐ ์ผ์ผ์ด ๋ชจ๋“  ๋กœ์ง์—์„œ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๊ฒŒ ์ƒ์‚ฐ์ ์ด์ง€ ์•Š๋‹ค.

 

 

๋”ฐ๋ผ์„œ ์—”ํ‹ฐํ‹ฐ์— @PrePersist๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

    @PrePersist
    public void prePersist() {
        this.reportedCount = this.reportedCount == null ? 0 : this.reportedCount;
        this.isDeleted = this.isDeleted == null ? false : this.isDeleted;
    }

 

 

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์„œ๋น„์Šค ๋กœ์ง์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋”๋ผ๋„ ์ž๋™์ ์œผ๋กœ reportCount๋Š” 0, isDeleted์—๋Š” false๊ฐ€ ์ €์žฅ๋œ๋‹ค.

        Member member = Member.builder()
                .email(joinReqDto.getEmail())
                .password(joinReqDto.getPassword())
                .nickname(joinReqDto.getNickname())
                .build();

        memberRepository.save(member);
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] Spring Cache์„ ์ ์šฉํ•œ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„  (with. Redis)  (0) 2024.03.19
[Spring] N+1 ๋ฌธ์ œ์™€ fetch join ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ  (0) 2024.03.15
[Spring] JWT AccessToken/RefreshToken ๊ตฌํ˜„ (with. Redis)  (0) 2024.03.12
[Spring] @AllArgsConstructor, @RequiredArgsConstructor ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ ์ด์œ   (0) 2024.03.05
[Spring] @ExceptionHandler๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (+ DTO Validation)  (0) 2024.03.05
  1. ๐ŸŒฑ @PrePersist ๋ž€?
  2. ๐ŸŒฑ @PreUpdate ๋ž€?
  3. ๐Ÿซง ์‚ฌ์šฉ ์‹œ ์œ ์˜ํ•  ์ 
  4. ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์‚ฌ์šฉ ์ฝ”๋“œ
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] Spring Cache์„ ์ ์šฉํ•œ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„  (with. Redis)
  • [Spring] N+1 ๋ฌธ์ œ์™€ fetch join ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ
  • [Spring] JWT AccessToken/RefreshToken ๊ตฌํ˜„ (with. Redis)
  • [Spring] @AllArgsConstructor, @RequiredArgsConstructor ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ ์ด์œ 
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

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

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[Spring] @PrePersist์™€ @PreUpdate
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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