์ ์ฒด ๊ธ10 @Transactional ์ ํตํด ๋์์ฑ ๋ฌธ์ ๋ฐฉ์งํ๊ธฐ ์น ๋ฐ์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋, dao์์ sql๋ฌธ์ผ๋ก db์ ์ ๊ทผํ๊ณ service์์ dao ๋ฉ์๋๋ค์ ์ด์ฉํ์ฌ ํ๋์ ํธ๋์ญ์ ์ ๊ด๋ฆฌํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ช ์ด์ ๋์์ ์ฌ์ฉํ๋ค๋ฉด? ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์์ฑ ๋ฌธ์ ๋, ๋ ๊ฐ ์ด์์ ์ธ์ ์ด ๊ณตํต๋ ์์์ ์ฝ๊ณ ์ธ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๋์์ฑ ๋ฌธ์ ์ ํธ๋์ญ์ ์ ๋ํด์ ์์๋ณด๊ณ , @Transactional ์ด๋ ธํ ์ด์ ์ผ๋ก ๋์์ฑ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค ํธ๋์ญ์ ์ด๋? DBMS์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์์ ์ ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฉ์ด์ ์ ์๋ก๋ ์ดํดํ๊ธฐ ์ด๋ ต์ง๋ง, ํธ๋์ญ์ ์ ์ฑ์ง์ ์์๋ณด๋ฉด ๋ณด๋ค ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ ๊ฒ์ ๋๋ค. ์๋ ์์์ฝ๋ ์ ๋๋ค. Service layer์์.. 2023. 3. 13. JPA @Embedded, @Embeddable ์ฌ์ฉํ๊ธฐ ์๋ฒ ๋๋ ํ์ ์๋ฒ ๋๋ ํ์ ์ ๋ณตํฉ ๊ฐ ํ์ ์ผ๋ก ๋ถ๋ฆฌ๋ฉฐ ์๋ก์ด ๊ฐ ํ์ ์ ์ง์ ์ ์ํด์ ์ฌ์ฉํ๋ JPA์ ๋ฐฉ๋ฒ์ ์๋ฏธํฉ๋๋ค. ์๋์ ์ฝ๋๋ฅผ ๋ณด๋ฉด User์ํฐํฐ๋ id, ์ด๋ฆ, ์ด๋ฉ์ผ, ์ฑ๋ณ, ์ฃผ์์ ๋ณด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋๋ฐ ์ฃผ์ ์ ๋ณด๊ฐ ๋์, ๊ตฌ, ์์ธ์ฃผ์, ์ฐํธ๋ฒํธ ๋ฑ์ผ๋ก ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ผ์ผ๋ก ๋๋ ์ ธ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. -> ์ด๋ ๊ฒ ์์ธํ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๊ฐ๊ณ ์๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ์ ์ด์ง ์์ผ๋ฉฐ ์์ง๋ ฅ์ ๋จ์ด๋จ๋ฆฝ๋๋ค. ์ด๋ด๋ ์๋ฒ ๋๋ ํ์ ์ ์ฌ์ฉํ๋ฉด ๋์ฑ๋ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. // user.java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @N.. 2023. 3. 10. JPA Auditing ๊ธฐ๋ฅ์ ํตํด Entity ๊ณตํต ์ปฌ๋ผ ์๋ํํด๋ณด๊ธฐ ORM ๊ธฐ์ ์ธ JPA๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋งคํํ ๋ ๊ณตํต์ ์ผ๋ก ๋๋ฉ์ธ๋ค์ด ๊ฐ์ง๊ณ ์๋ ํ๋๋ ์ปฌ๋ผ๋ค์ ๋ ์กด์ฌํฉ๋๋ค. ๋ํ์ ์ผ๋ก ์์ฑ์, ์์ ์, ์์ฑ์ผ์, ์์ ์ผ์, ์๋ณ์ ๊ฐ์ ํ๋ ๋ฐ ์ปฌ๋ผ์ด ์์ต๋๋ค. ๋๋ฉ์ธ๋ง๋ค ๊ณตํต์ผ๋ก ์กด์ฌํ๋ค๋ ์๋ฏธ๋ ๊ฒฐ๊ตญ ์ฝ๋๊ฐ ์ค๋ณต๋๋ค๋ ๋ง๊ณผ ์ผ๋งฅ์ํตํ๋ฐ, ์์ฑ์, ์์ ์, ์์ฑ์ผ์, ์์ ์ผ์ ๊ฐ์ ์ปฌ๋ผ์ DB ๊ด์ ์์ ๋งค์ฐ ์ค์ํ ๋ฐ์ดํฐ์ ๋๋ค. ๊ทธ๋์ JPA์์๋ Audit์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. Audit์ ๊ฐ์ํ๋ค๋ผ๋ ๋ป์ผ๋ก Spring Data JPA์์ ์๊ฐ์ ๋ํด์ ์๋์ผ๋ก ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋๋ฉ์ธ์ ์์์ฑ ์ปจํ ์คํธ์ INSERT ํ๊ฑฐ๋ UPDATE ํ๋ ๊ฒฝ์ฐ ๋งค๋ฒ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ฌ ์ ์ฅํด์ผ ํ๋๋ฐ, audit์.. 2023. 3. 10. Disk์ ์ ์ฅํ์ง ์๊ณ ์ด๋ฏธ์ง Resize ํ๊ธฐ java-image-scaling์ ํตํด ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ ์์ด ์ด๋ฏธ์ง ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ํผ๋ฐ์ค๋ค์ ์ดํด๋ณด๋ฉด ๋ณดํต ์๋์ ๊ฐ์ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณค์ต๋๋ค. Disk์ ์๋ณธ์ ์ ์ฅํ๋ค. Resize ํ๋ค. (์๋ณธ๊ณผ Resize ํ์ผ ๋๊ฐ๊ฐ ์กด์ฌํ๋ ์ํ) (์๋ณธ์ ์ญ์ ํ๋ค) ์ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๊ตฌํํ๊ณ ์ถ์ ๋ถ๋ถ์ ์๋ณธ ํ์ผ์ ์ ์ฅํ๊ณ ์ถ์ง ์์์. ์ ์ฅํ๊ณ ์ญ์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ณ ์ถ์ง ์์์. ํ์ผ์ Image IO๋ก ์ฝ๊ณ , ์ฐ๊ธฐ๋ง ํ์ฌ ๊ฐ๋จํ ํด๊ฒฐ ํ ์ ์์๊ณ , ์์ผ๋ก ์์ฃผ ์จ๋จน์ ๋ฏํฉ๋๋ค. public static void resize(File originFile, File resizeFile) throws IOException { BufferedIma.. 2023. 3. 10. ์ด์ 1 2 ๋ค์