[Spring JPA] OSIV ์ „๋žต

2024. 1. 22. 17:47ยท๐ŸŒฟSpring/Spring Data JPA
๋ชฉ์ฐจ
  1. OSIV (Open Session In View)
  2. spring.jpa.open-in-view: true
  3. spring.jpa.open-in-view: false
  4. ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?
๋ฐ˜์‘ํ˜•

 

์ €๋ฒˆ ์‹œ๊ฐ„์— Spring Data JPA ๋ฌด์—‡์ธ๊ฐ€์™€ ๊ฐ„๋‹จํ•œ ํ•ต์‹ฌ์ „๋žต์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค๋‹ค.

์ด์–ด์„œ Spring Data JPA์˜ ์„ธ์…˜ ๊ด€๋ฆฌ ์ „๋žต ์ค‘ ํ•˜๋‚˜์ธ OSIV ์ „๋žต์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

2024.01.22 - [๐ŸŒฟSpring/Spring JPA] - [Spring JPA] JPA๋ž€?

 

[Spring JPA] JPA๋ž€?

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JPA(Java Persistence API)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. JPA๋Š” ์ž๋ฐ” ์ง„์˜์—์„œ ORM(Object-Relational Mapping) ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ์Œ์ด๋‹ค. ๊ทธ ๋ง์€ ์ฆ‰, ์‹ค์ œ์ ์œผ๋กœ ๊ตฌํ˜„ ๋œ ๊ฒƒ์ด ์•„

boom-94.tistory.com


OSIV (Open Session In View)

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„ธ์…˜ ๊ด€๋ฆฌ ์ „๋žต ์ค‘ ํ•˜๋‚˜
  • ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ ๊ฐ’์ด True๋กœ ์„ค์ •
  • application.yaml ํŒŒ์ผ์—์„œ ์„ค์ •

spring.jpa.open-in-view: true

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP ์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ์ƒ์„ฑ, ์ด์— ๋”ฐ๋ผ ๋งŽ์€ ์ˆ˜์˜ DB์ปค๋„ฅ์…˜์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‹จ, OSIV ์˜ต์…˜์„ True๋กœ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉ ํ•  ๊ฒฝ์šฐ, ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘์ฒ˜๋Ÿผ ์ตœ์ดˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ์‹œ์ž‘ ์‹œ์ ๋ถ€ํ„ฐ API ์‘๋‹ต์ด ๋๋‚  ๋•Œ ๊นŒ์ง€ ์˜์†์„ฑ ์ปจํ…Œ์ŠคํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์„ ์œ ์ง€

์žฅ์ 

  • ์ง€์—ฐ ๋กœ๋”ฉ์€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ์‚ด์•„์žˆ์–ด์•ผ ๊ฐ€๋Šฅ
  • ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์„ ์œ ์ง€
  • ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์žฅ์ 

๋‹จ์ 

  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ API๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ 10์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด, 10์ดˆ ๋™์•ˆ ์ปค๋„ฅ์…˜์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์œ ์ง€
  • ๋„ˆ๋ฌด ์˜ค๋žœ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ, ์‹ค์‹œ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์ผ ๊ฒฝ์šฐ ์ปค๋„ฅ์…˜์ด ๋ถ€์กฑํ•ด ์‹œ์Šคํ…œ ์žฅ์• ๋กœ ์ด์–ด์ง„๋‹ค.

 

spring.jpa.open-in-view: false

 

  • OSIV๋ฅผ ๋„๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ข…๋ฃŒ ํ•  ๋•Œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋‹ซ๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜๋„ ๋ฐ˜ํ™˜

์žฅ์ 

  • ์ปค๋„ฅ์…˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹จ์ 

  • ์ง€์—ฐ๋กœ๋”ฉ์€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ์‚ด์•„ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋‹ซํ˜”๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ง€์—ฐ๋กœ๋”ฉ์„ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์ฒ˜๋ฆฌ
  • ์ง€์—ฐ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ์—์„œ OSIV๋ฅผ ๋„๊ณ  ์‹คํ–‰ํ•˜๋ฉด LazyInitializationException์ด ๋ฐœ์ƒ
    • ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ง€์—ฐ๋กœ๋”ฉ์ฝ”๋“œ๋ฅผ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ˜ํ™˜, fetch join์„ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐ

์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

  1. ์š”์ฒญ์ด ๋งŽ์ง€ ์•Š์€ ๊ฐ„๋‹จํ•œ ์„œ๋น„์Šค๋‚˜ ์ปค๋„ฅ์…˜์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณณ์—์„œ๋Š” TRUE
    • ์ง€์—ฐ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํŽธ๋ฆฌ
  2. ๊ณ ๊ฐ ์„œ๋น„์Šค ์‹ค์‹œ๊ฐ„ API๋Š” FALSE
    • ์ปค๋„ฅ์…˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜์ง€๋งŒ ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”
๋ฐ˜์‘ํ˜•

'๐ŸŒฟSpring > Spring Data JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring JPA] JPA๋ž€?  (0) 2024.01.22
  1. OSIV (Open Session In View)
  2. spring.jpa.open-in-view: true
  3. spring.jpa.open-in-view: false
  4. ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?
'๐ŸŒฟSpring/Spring Data JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring JPA] JPA๋ž€?
Boom's
Boom's
๋ถ„์•ผ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  ํ•ญ์ƒ ๋ฐฐ์šฐ๊ณ , ์‘์šฉํ•˜๊ณ  ์‹ถ์€ Boom ๊ฐœ๋ฐœ์ž ๋ธ”๋กœ๊ทธ
Boom's
Boom's Devlog
Boom's
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์นดํ…Œ๊ณ ๋ฆฌ (26)
    • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Re:Mind (5)
      • ๐Ÿ”ฅ ํšŒ๊ณ  (3)
      • ๐Ÿ“• ์ˆ˜๋ฃŒ์ฆ (2)
    • ๐Ÿ“ Language (5)
      • Java (4)
    • ๐ŸŒฟSpring (8)
      • Spring Framework (6)
      • Spring Security (0)
      • Spring Data JPA (2)
    • ๐ŸŒบ Laravel (1)
    • Database (4)
      • SQL (1)
      • Redis (2)
    • ๐Ÿ“ Infra (2)
      • DevOps (1)
      • Docker (0)
      • AWS (0)
      • ArgoCD (1)
    • Etc (1)

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

  • ํ™ˆ
  • Github

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • springboot
  • cicd
  • decoupledLogic
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ง€์‹
  • php
  • ๋ ˆ๋””์Šค
  • NoSQL
  • OSIV
  • Hibernate
  • SpringFramwork
  • ๋ช…๋ น์–ด
  • springframewokr
  • JPA
  • ๊ฐœ๋ฐœ
  • ํšŒ๊ณ ๋ก
  • Database
  • redis-cli
  • java
  • Redis
  • laravel
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • spring
  • argocd
  • Thyemelaf
  • HTML
  • gitops
  • springframework
  • ORM
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹
  • springdatajpa

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.2
Boom's
[Spring JPA] OSIV ์ „๋žต
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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