728x90
๋ฐ˜์‘ํ˜•
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - Auditing

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Entity๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ, ๊ฐ๊ฐ์˜ ์‹œ๊ฐ„๊ณผ ๋‹ด๋‹น์ž๋ฅผ ์ถ”์ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‹ค๋ฌด์—์„œ ์ด๋ ฅ์„ ๋‚จ๊ธฐ๊ธฐ์œ„ํ•ด ๋งŽ์ด ์“ฐ์ด๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ์š”, ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„  Entity๋งˆ๋‹ค ํ•„์š”์—๋”ฐ๋ผ ์ƒ์„ฑ ์‹œ๊ฐ„, ์ˆ˜์ • ์‹œ๊ฐ„, ์ƒ์„ฑํ•œ ์‚ฌ๋žŒ, ์ˆ˜์ •ํ•œ ์‚ฌ๋žŒ ์ด ๋„ค ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Entity๊ฐ€ ๊ฒฐ๊ตญ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต์ ์ธ ์†์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ๊ทธ ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. BaseEntity ์ •์˜ ์ƒ์„ฑ ์‹œ๊ฐ„, ์ˆ˜์ • ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” Entity๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. package io.lcalmsky.springdatajpa.domain.entity; import javax.persistence.Colu..

JPA 2021. 7. 9. 12:00
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - Custom Repository Best Practice

์‚ฌ์šฉ์ž ์ •์˜ Repository Best Practice ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ผ๊ณ  ํ•จ์€, JpaRepository๋ฅผ ์ƒ์†ํ•ด์„œ ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ตฌํ˜„์ฒด์—์„œ ์ง์ ‘ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ MyBatis, JdbcTemplate, QueryDSL ๋“ฑ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ(?) ๋‚˜์œ ์˜ˆ์‹œ Entity๊ฐ€ Member, Team์ด ์กด์žฌํ•˜๊ณ  Member๋Š” JpaRepository๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Team์€ ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ทธ๋ƒฅ ๊ตฌํ˜„ํ•ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MemberRepository๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ CustomMemberRepository๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ S..

JPA 2021. 7. 7. 09:42
Live Template์œผ๋กœ Entity ํด๋ž˜์Šค 1์ดˆ๋งŒ์— ๋งŒ๋“ค๊ธฐ

JPA๋ฅผ ๋‹ค๋ฃจ๋‹ค๋ณด๋ฉด Entity๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•ด์ค˜์•ผ ํ•  ์ผ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. @Entity ์• ๋„ˆํ…Œ์ด์…˜์„ ํด๋ž˜์Šค ์ด๋ฆ„ ์œ„์— ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•˜๊ณ , lombok์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ @Getter, @Setter ๋“ฑ์„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ IntelliJ Ultimate ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด DataSource์™€ ์ž๋™์œผ๋กœ ์—ฐ๋™ํ•˜์—ฌ JPA ๊ด€๋ จ๋œ ์†์„ฑ๋“ค์„ ํŒŒ์•…ํ•ด ์ปดํŒŒ์ผํƒ€์ž„์— ๋ฐ”๋กœ๋ฐ”๋กœ ์—๋Ÿฌ๋‚˜ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ„์† ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ํ•˜๋Š”๊ฒŒ ๊ท€์ฐฎ๊ธฐ๋„ ํ•˜๊ณ  ๋ฐ”๋กœ๋ฐ”๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๋นจ๊ฐ„ ์ค„๋“ค์ด ์‹ ๊ฒฝ์“ฐ์ด๊ธฐ๋„ ํ•ด์„œ ๊ฑฐ์˜ ๊ธฐ๋ณธ ํฌ๋งท์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” Entity ํด๋ž˜์Šค๋ฅผ Live Template ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ์ •์˜ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์„ค์ • ํƒญ์—์„œ Live Template์„ ๊ฒ€์ƒ‰ํ•œ ๋’ค Java ํ•ญ๋ชฉ์„ ์ฐพ..

IntelliJ IDEA 2021. 6. 15. 04:39
JPA๋ž€?

์ž๋ฐ”์˜ ORM ํ‘œ์ค€ ๊ธฐ์ˆ ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ JDBC API ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ORM(Object-Relational Mapping)์€ ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋งคํ•‘์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ORM ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ORM ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž๋ฐ” ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ORM ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Entity๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฐ์ฒด๋ฅผ ๋ถ„์„ํ•˜์—ฌ SQL๋ฌธ์„ ์ƒ์„ฑํ•˜๊ณ  JDBC API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์—ฐ๋™๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ž์„œ ๋‹ค๋ค˜๋˜ ๋ฌธ์ œ๋“ค(์ด์ „ ํฌ์ŠคํŒ… ์ฐธ์กฐ, SQL์˜ ๋ฌธ์ œ์ , ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒด๊ณ„์™€ ํ•œ๊ณ„)์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด๋‹ค ์ •๊ตํ•œ ๋ชจ๋ธ๋ง์„ ๊ฐ๊ฐ์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋งˆ๋””๋กœ..

JPA 2020. 4. 3. 03:49
728x90
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
Total
71,740
Today
103
Yesterday
133
๋งํฌ
«   2022/05   »
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
๊ธ€ ๋ณด๊ด€ํ•จ