Pageable์ ์ฌ์ฉํ๋ JPA ๋ฉ์๋์์ N+1๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ์ ์๋ํด ๋ณธ ๊ฒ๋ค๊ณผ ํด๊ฒฐ ๊ณผ์ ์ ๋ํด ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค. ๋ฌธ์ ์ํฉ ๊ฒ์ํ ์ ์ฒด ๋ชฉ๋ก๋ณด๊ธฐ์ ํธ์ถ๋๋ Pageable์ ์ด์ฉํ ๋ฉ์๋์ด๋ค. public interface BaordRepository extends JpaRepository { Page findAllByHideIsFalse(Pageable pageable); } findAllByHideIsFalse() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ์๋์ ๊ฐ์ด N+1๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ฒ์ํ์ ์์ฑํ user์ ์ N๋งํผ ์ถ๊ฐ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. Hibernate: select board0_.id as id1_0_, board0_.content as content2_0_, board0_.create..
๐ทDev
Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ปจํธ๋กค๋ฌ์์ text/htmlํ์์ด ์๋ ๋ฐ์ดํฐ ์ ๋ฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ XML ๋๋ JSON ํํ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. Jackson์ ๊ทธ ์ค JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ ํํ ๋งํ๋ฉด Jackson์ Java์์ JSON์ ํ์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ์คํ์์ค ํ๋ก์ ํธ ์ธํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. JSON์ ํ์ฑํด์ฃผ๋ ํด๋์ค์๋ Jackson ๋ฟ๋ง ์๋๋ผ, Google์ด ๋ง๋ GSON ๋๋ SimpleJSON ๋ ์๋ค. Spring์ด Jackson์ ๋ ์ ํธํ๋ ์ด์ Jackson, GSON, SimpleJSON์ ์ฐจ์ด๋ ์๋ค. Jackson์ ํน๋ณํ ์ ์ Spring 3.0๋ถํฐ Jackson๊ณผ ๊ด๋ จ๋ API๋ฅผ ์ ๊ณตํ์ฌ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ..
'spring-boot-starter-web' ์์กด์ฑ์ ํฌํจ์ํค๋ฉด, Spring Boot๋ ๋ด๋ถ์ ์ผ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํ๋ค. ์ด๋ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ์๋ ๊ตฌ์ฑ์ ์ผ๋ถ๋ก Spring Boot์ ๋ฒ์ ์ ๋ฐ๋ผ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ๋ฒ์ ์ด ๊ฒฐ์ ๋๋ค. 2.7.15 ๋ฒ์ ์ Spring Boot ํ๋ก์ ํธ์์ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ํ์ธํด ๋ณด์๋ค. ํฐ๋ฏธ๋์์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ ํ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ํ๋ก์ ํธ์ ๋ชจ๋ ์์กด์ฑ๊ณผ ๋ฒ์ ์ ํ์ธํ ์ ์๋ค. ./gradlew dependencies 'com.fasterxml.jackson.core' ๋๋ 'jackson-databind'์ ๊ฐ์ Jackson ๊ด๋ จ ์์กด์ฑ์ ์ฐพ์ผ๋ฉด ํด๋น ๋ฒ์ ์ ํ์ธํ ์ ์๋ค. Spring ..
ํ๋ก์ ํธ์์ ๋ฐํ์ ์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , OCP๋ฅผ ๋ง์กฑํ๋ ์ฝ๋๋ก ๊ฐ์ ํ๊ธฐ ์ํด ๋์์ธ ํจํด์ ๊ณ ๋ คํ ๊ณผ์ ์ ๊ธฐ๋กํ์๋ค. 1. ์ ๋ต ํจํด vs ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ์ถ์ ํด๋์ค๋ฅผ ์์ํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์๋ค. ์์์ ์์ ํด๋์ค์ ํ์ ํด๋์ค๊ฐ ๊ฐ๋ ฅํ๊ฒ ๋ฐ์ ๋์ด ์์ด ๊ฒฐํฉ๋๊ฐ ๋๋ค. ๋ํ ์์ ๊ด๊ณ๋ ์ปดํ์ผ ๋จ๊ณ์์ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ์คํ ์ค ๊ฐ์ฒด๋ฅผ ๋์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐํ๋ค. ๋ฐํ์ ์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ์ด์ ๋ก ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ์ ํฉํ์ง ์๋ค. 2. ์ ๋ต ํจํด vs ์ํ ํจํด 2-1. ์ ๋ต ํจํด ์ ๋ต ํจํด์ ํน์ ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์บก์ํํ๊ณ , ์ด ๋ฐฉ๋ฒ๋ค์ ์ํธ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋๋ก ํ ํจํด์ด๋ค. Context : ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒ, ์ ๋ต..
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ณ ๋ฏผํ ๋ด์ฉ ์ ๋ฆฌ [ ํ๋ก์ ํธ ์ค๋ช
]๊ณต์ ํ์ด์ง ๋ฆฌ๋ด์ผ ํ๋ก์ ํธ์ด๊ณ , ๊ณต์ ํ์ด์ง ๋ด์๋ ๋ค์ํ ๋ธ๋ก๋ค์ด ์๋ค. ๋ธ๋ก์ ์ถ๊ฐํ๊ณ ๋๋๊ทธ์ค๋๋กญ์ผ๋ก ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๊ณต์ ํ์ด์ง ๋ด์ ๋ธ๋ก๋ค๊ณผ ๋ธ๋ก ๋ด์ ๋ฐ์ดํฐ๋ค์ ์ ์ฅ/์์ /์กฐํ ์ ํ๋์ API๋ก ์ ์ก๋๋ค. ๊ณต์ ํ์ด์ง ์์ ์ ๋ธ๋ก์ด ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ํน์ ์์๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค. ๋ธ๋ก์ ์์๋ int๊ฐ์ด ์๋, Request, Response ๋ฐ์ดํฐ์ ์์๋๋ก ์ ๋ ฌ๋์ด ๋ฆฌ์คํธ๋ก ํด๋ผ์ด์ธํธ์ ํต์ ํ๋ค. 1. NoSQL vs MySQLํ๋ก์ ํธ ํ๋ก์ฐ์ Update๊ฐ ๋ง์ด ๋ฐ์ํ๊ณ , ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ ํ์ฑ ๋ณด์ฅ์ ์ํด MySQL์ ์ ํํ์๋ค. 2. Foreign key๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋๋ค ๊ด๊ณ๋ก DB ์ค๊ณ๊ณต์ ํ..
์์กด์ฑ ์ฃผ์
(DI, Dependency Injection)์ด๋? ์์กด์ฑ ์ฃผ์
์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๊ณ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค. ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ Spring์ @Autowired ์ด๋
ธํ
์ด์
์ ์ด์ฉํ ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. @Autowired ์ด๋
ธํ
์ด์
์ Spring์๊ฒ ์์กด์ฑ์ ์ฃผ์
ํ๋ ์ง์์ ์ญํ ๋ก ์ฐ์ธ๋ค. 1. ์์ฑ์ ์ฃผ์
(Constructor Injection) @Service public class SpaceWallFindService { private final SpaceWallRepository spaceWallRepository; private final BlockStrateg..
๊ณต์ ํ์ด์ง ๋ฆฌ๋ด์ผ ํ๋ก์ ํธ์์ ๊ณต์ ํ์ด์ง ๋ด์ ์ฌ๋ฌ ๋ธ๋ก๋ค์ด ์๊ณ ๊ฐ ๋ธ๋ก๋ค์ ๋๋๊ทธ์ค๋๋กญ ๊ฐ๋ฅ ์ ๋ฌด๋ก ๋ถ๋ฅ๋๋ค. ์์ ์ ์ฝ๋ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฒ์์๋ switch case ๋ฌธ์ผ๋ก ๊ฐ๋ฐํ์๋ค. ์ฌ๊ธฐ์ blockType์ด ์ถ๊ฐ/์ญ์ ๋ ๊ฒฝ์ฐ Serice ํด๋์ค์ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ OCP์ ์๋ฐฐ๋๋ ์ ์ง๋ณด์์ฑ์ด ์ข์ง ์์ ์ฝ๋์ด๋ค. ๋ํ ์คํ ์ค blockType์ ๊ต์ฒด๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ์ฌ ์ ๋ต ํจํด์ ์ด์ฉํด ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ธฐ๋ก ํ๋ค. ๐ฝ ์ ๋ต ํจํด์ ์ ํํ ์ด์ [Java] ์ ๋ต ํจํด vs ํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด vs ์ํ ํจํด ํ๋ก์ ํธ์์ ๋ฐํ์ ์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , OCP๋ฅผ ๋ง์กฑํ๋ ์ฝ๋๋ก ๊ฐ์ ํ๊ธฐ ์ํด ๋์์ธ ํจํด์ ๊ณ ๋ คํ ๊ณผ์ ์ ๊ธฐ๋กํ์๋ค. 1. ์ ๋ต ํจํด vs ํ
..
๋ฌธ์ ์ํฉ AWS EC2์ Nginx๋ก ์๋ฒ๋ฅผ ๋ฐฐํฌํ๊ณ multipart/form-data๋ฅผ ์ ์กํ๋ฉด์ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 64; ignoring types_hash_bucket_size ์ด ์ค๋ฅ ๋ฉ์ธ์ง๋ Nginx๊ฐ types_hash๋ฅผ ์ต์ ์ผ๋ก ๊ตฌ์ฑํ์ง ๋ชปํ์์ ์๋ฏธํ๋ค. types_hash๋ฅผ ์ต์ ์ผ๋ก ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ types_hash_max_size ๋๋ types_hash_bucket_size ์ค ํ๋๋ฅผ ๋๋ ค์ผ ํ๋ค๋ ์กฐ์ธ์ด๋ค. ๋ฌธ์ ์์ธ typse_ha..