๊ต์ก์
์ : ์ฐ์ํํ์ ๋ค ๊ธฐ์ ์ด์ฌ, ์นด์นด์ค, SKํ๋๋
์ ์: ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์ง์ง ์ค๋ฌด์ ํ์ํ ์ ๋๋ก ๋ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋๋ก, ๊ต์กํ๋ ๊ฒ์ด ์ ์ ๋ชฉํ์ ๋๋ค.
์ ์ ๊ฐ๋ฐ ์ธ์ ์ด์ผ๊ธฐ
EO ์ธํฐ๋ทฐ ์์
ํ๊ตญ ๊ฐ๋ฐ์ ์ต๊ณ 1ํ๊ฐ์ฌ ๊น์ํ์ ์ธ์ [1๋ถ]
ํ๊ตญ ๊ฐ๋ฐ์ ์ต๊ณ 1ํ๊ฐ์ฌ ๊น์ํ์ ์ธ์ [2๋ถ]
๊ฐ๋ฐ๋ฐ๋ฅ - ์๊ณจ ์ฒญ๋ ๊ฐ๋ฐ์ ๋๋ค
์ทจ์ ๊ณผ ์ด์ง์ ๋ํ ๊ณ ๋ฏผ ํด๊ฒฐ
Courses
Reviews
skzkfls
ยท
Real-World Java - Advanced Part 3, Lambda, Streams, and Functional Programming by Kim Young-hanReal-World Java - Advanced Part 3, Lambda, Streams, and Functional Programming by Kim Young-han- Kim Young-han's Java Tutorial - Your First Step into Java with Code
- Spring MVC Part 1 - Core technologies for backend web development
- Kim Young-han's Practical Java - Intermediate Level 1
- Spring for Beginners - Learn Spring Boot, Web MVC, and DB Access Technology with Code
Posts
Q&A
์ธ๋ถ์กฐ์ธ ์ค์ต 1๋ฒ img์คํ
ok2๋ ๊ณ ๋ง์ต๋๋ค^^!๋ค์ ๋ฒ์ ์ ํจ์นํ ๊ฒ์!
- 0
- 1
- 20
Q&A
์ธํ ๋ฆฌ์ ์ด ํจํค์ง ์ปค์ ๋จ์ถํค ์ง๋ฌธ
์๋ ํ์ธ์. xuv2๋AI ์ธํด์ด ๋งํด์ค ๊ฒ ์ฒ๋ผ alt + 1์ ์ฌ์ฉํฉ๋๋ค ๐๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 23
Q&A
build ๋๋ ํฐ๋ฆฌ ์์ฑ
์๋ ํ์ธ์. ์ฃผ์222๋Querydsl ๋ฒ์ ์ ๋ฐ๋ผ์ ๋ค๋ฅผ ์ ์๋๋ฐ์. ์ฐ์ clean์ ํด์ฃผ์๋ฉด build ํด๋๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.์ดํ์ ๊ณผ๊ฑฐ ๋ฒ์ ์ด๋ผ๋ฉด compileQuerydsl, ์ต์ ๋ฒ์ ์ด๋ผ๋ฉด build๋ฅผ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 22
Q&A
save ํ ๊ฒฐ๊ณผํ๋ฉด
์๋ ํ์ธ์. rlgus4531๋JSP๋ ๊ฒฐ๊ตญ ์๋ธ๋ฆฟ์ด๊ธฐ ๋๋ฌธ์ JSP๋ฅผ ์ฌ์ฉํด๋ redirect๋ฅผ ์ฌ์ฉํ ์ ๋ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 23
Q&A
[์๋ฃ ํจํค์ง ๋๋ฝ] 2.๋๋ค ์๋ฃ์์ ๋ฌธ์ ํจํค์ง๋ช ์๋ต (25page)
๋ฅ์ ๊ท ๋ ๊ฐ์ฌํฉ๋๋ค ๐๋ค์ ํจ์น์ ๋ฐ์ํ ๊ฒ์^^!
- 0
- 2
- 33
Q&A
drop๊ณผ truncate
์๋ ํ์ธ์. Alex Kim๋์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค ๐DROP: ํ ์ด๋ธ ์์ฒด๋ฅผ ์์ ํ ์ ๊ฑฐTRUNCATE: ํ ์ด๋ธ์ ์ ์งํ๊ณ ๊ทธ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ๊ฑฐ, ๋งค์ฐ ๋น ๋ฅด์ง๋ง ๋กค๋ฐฑ ๋ถ๊ฐ๋ฅDELETE: ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํด์ ์ ๊ฑฐ, ๋๋ฆฌ์ง๋ง, ๋กค๋ฐฑ ๊ฐ๋ฅ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 36
Q&A
์ง์ฐ ํ๊ฐ
์๋ ํ์ธ์. tmdwhd319๋์์๊ฐ์ ๊ฒฝ์ฐ ์์๊ฐ byte๋ง ์ฐจ์งํฉ๋๋ค.์ฐธ์กฐ ๊ฐ์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ '์ฃผ์๊ฐ' + 'ํ์ ์๋ ์ค์ ๊ฐ์ฒด์ ํฌ๊ธฐ'๊ฐ ๋ฉ๋๋ค.๋๋ค์ ๊ฒฝ์ฐ ์ฐธ์กฐ๊ฐ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋๋ค ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ '์ฃผ์๊ฐ'๊ณผ 'ํ์ ์์ฑ๋ ๋๋ค ๊ฐ์ฒด'๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํฉ๋๋ค. (๋๋ค์ ๊ฒฝ์ฐ ์บก์ฒํ๋ ๋ณ์๊ฐ ์๋ค๋ฉด ์ฝ 20๋ฐ์ดํธ ์ ๋์ ์์ฃผ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฐจ์งํฉ๋๋ค.)์ถ๊ฐ๋ก CPU์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋ก ๋ค๋ฅธ ๋ฆฌ์์ค์ด๊ธฐ ๋๋ฌธ์ ๋์ ๋น๊ตํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.๊ทธ๋๋ ์ด๋ค ๋ก์ง์ด๋ ํธ์ถ๋๋ ๊ฒ ๋ณด๋ค๋ ํธ์ถ๋์ง ์๋ ์ชฝ์ด ์ ์ฒด์ ์ธ ๋ฆฌ์์ค ์ฌ์ฉ์ด ํจ์ฌ ๋ํ๊ฒ ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 24
Q&A
AopCheck Test ๋ถ๋ถ์ EnhancerBySpring ํ์ธ ๋ฒ??
์๋ ํ์ธ์. Minho Lee๋์คํ๋ง์ ๋ฒ์ ์ ๋ฐ๋ผ์ ํด๋น ํค์๋๋ค์ด ๋ฌ๋ฆฌ ๋์ฌ ์ ์์ต๋๋ค.ํ๋ฉด์ ๋ณด์ด๋ SpringCGLIB๋ผ๊ณ ๋ณด์ด๋ฉด ์ ์ฉ๋ ๊ฒ์ผ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค ๐๋ค์ ํจ์น์ ๋ฉ๋ด์ผ์๋ ๋ฐ์ํด๋๊ฒ์ ๐๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 26
Q&A
์ค๊ธ2ํธ 56๊ฐ์ bucket.add(value); ๋ฉ์๋๊ฐ ์ดํด๊ฐ ์๋ฉ๋๋ค.
์๋ ํ์ธ์. ๊น์ข ์ฐฝ๋ํด๋น ์ฝ๋๋ ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ LinkedList ํด๋์ค์ add() ๋ฉ์๋์ ๋๋ค.์์ธํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:1. buckets ๋ฐฐ์ด์ ์ ์ธ: MyHashSetV1 ํด๋์ค๋ฅผ ๋ณด๋ฉด, LinkedList[] buckets;์ ๊ฐ์ด buckets ๋ณ์๊ฐ LinkedList ๊ฐ์ฒด๋ค์ ๋ฐฐ์ด๋ก ์ ์ธ๋์ด ์์ต๋๋ค.2. buckets ์ด๊ธฐํ: initBuckets() ๋ฉ์๋์์๋ ์ด buckets ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค์ new LinkedList();๋ฅผ ํตํด ์๋ก์ด LinkedList ์ธ์คํด์ค๋ฅผ ํ ๋นํ๊ณ ์์ต๋๋ค.3. bucket ๋ณ์: add(int value) ๋ฉ์๋ ๋ด๋ถ์์ LinkedList bucket = buckets[hashIndex];์ ๊ฐ์ด hashIndex์ ํด๋นํ๋ buckets ๋ฐฐ์ด์ ์์๋ฅผ bucket ๋ณ์์ ํ ๋นํฉ๋๋ค. ์ด bucket์ java.util.LinkedList ํ์ ์ ๊ฐ์ฒด์ ๋๋ค.4. bucket.add(value);: ๋ฐ๋ผ์ bucket.add(value); ์ฝ๋๋ java.util.LinkedList ๊ฐ์ฒด์ธ bucket์ add() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ value๋ฅผ ํด๋น ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.์ด์ ์ ๊ฐ์์์ ๋ณด์ จ๋ inputArray = 1;์ ๊ฐ์ด ์ง์ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๊ฐ์ ๋์ ํ๋ ๋ฐฉ์์ ๊ธฐ๋ณธ ๋ฐฐ์ด(primitive array)์ ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ํ์ง๋ง MyHashSetV1์์๋ ํด์ ์ถฉ๋์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค์ ๋ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ์ธ LinkedList๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ด LinkedList์ add() ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค.LinkedList๋ ์๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ผ๋ถ๋ก, ํฌ๊ธฐ๊ฐ ๋์ ์ผ๋ก ๋ณํ ์ ์๋ ๋ฆฌ์คํธ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค. ์ด add() ๋ฉ์๋๋ LinkedList์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์๋ฅผ ์ถ๊ฐํ๋ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 3
- 37
Q&A
limit, offset ์์ ์ธ๋ฑ์ค ๋์
์๋ ํ์ธ์. bebe๋๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด, DBMS๋ LIMIT์ OFFSET์ ์ฒ๋ฆฌํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ทธ๋๋ก ํ์ฉํ์ง๋ง, OFFSET ๊ฐ์ด ์ปค์ง์๋ก ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ฌ ํน๋ณํ ์ต์ ํ ๊ธฐ๋ฒ์ด ํ์ํ ์ ์์ต๋๋ค. ์ง๋ฌธํด์ฃผ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ํ๋์ฉ ์์ธํ ์ค๋ช ํด ๋๋ฆด๊ฒ์.ORDER BY ์ ์ ์ฌ์ฉ๋ ์นผ๋ผ์ ์ธ๋ฑ์ค๊ฐ ์๋ค๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๋ ฌ๋ ์์๋๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ฏ๋ก Filesort๋ฅผ ํผํ ์ ์์ต๋๋ค.LIMIT์ OFFSET์ด ํฌํจ๋ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ๋์ํฉ๋๋ค.์ธ๋ฑ์ค ์ค์บ ์์: ORDER BY ์ ์ ์นผ๋ผ ์ธ๋ฑ์ค(์: ์์ฑ์ผ ์ธ๋ฑ์ค)๋ฅผ ์ฒ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ค์บํฉ๋๋ค.OFFSET ๋งํผ ๊ฑด๋๋ฐ๊ธฐ: ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ฑ์ค์ ๋ฆฌํ ๋ ธ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ OFFSET์ ์ง์ ๋ ์๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋ฒ๋ฆฝ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ ํ๋ค๋ ๊ฒ์ ๋๋ค.LIMIT ๋งํผ ๋ฐํ: OFFSET ์๋งํผ ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋๋ด ํ, LIMIT์ ์ง์ ๋ ์๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ์์๊ฒ ๋ฐํํฉ๋๋ค.์ฆ, ๊ถ๊ธํดํ์ "n๋ฒ์งธ ์นผ๋ผ์ ๋น ๋ฅด๊ฒ ์์๋ด๋" ํน๋ณํ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ์ ์๋๋๋ค. DBMS๋ ์ธ๋ฑ์ค๋ฅผ ์ฒ์๋ถํฐ ํ์ผ๋ฉด์ OFFSET ๊ฐ์๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ผ์ผ์ด ๊ฑด๋๋ฐ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.OFFSET์ด ์ปค์ง ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ์์ด๋ฌํ ๋์ ๋ฐฉ์ ๋๋ฌธ์ OFFSET ๊ฐ์ด ์์ ๋๋ ๋งค์ฐ ํจ์จ์ ์ด์ง๋ง, OFFSET ๊ฐ์ด ์๋ฐฑ๋ง, ์์ฒ๋ง์ ๋ฌํ๋ "๋ค์ชฝ ํ์ด์ง"๋ก ๊ฐ์๋ก ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด OFFSET 10000000, LIMIT 20 ์ด๋ผ๋ ์ฟผ๋ฆฌ๋ 20๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ฌด๋ ค 10,000,000๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค๋ก ์ค์บํ๊ณ , ํ ์ด๋ธ์์ ์ฝ์ด์จ ๋ค ๋ฒ๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.์ด๋ ์ธ๊ธํ์ ์ปค๋ฒ๋ง ์ธ๋ฑ์ค๊ฐ 1์ฐจ์ ์ธ ํด๊ฒฐ์ฑ ์ด ๋ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ์ ํ์ํ ๋ชจ๋ ์นผ๋ผ์ด ์ธ๋ฑ์ค์ ํฌํจ๋์ด ์๋ค๋ฉด, ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ ๊ทผํ๋ Random I/O๋ฅผ ํผํ๊ณ ์ธ๋ฑ์ค ๋ด์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋ฒ๋ฆด ์ ์์ด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.ํ์ง๋ง ์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ง์ผ๋ก๋ OFFSET์ด ๋งค์ฐ ํด ๋ ๋ฐ์ํ๋ ๋๋์ ๋ถํ์ํ ์ค์บ ์์ฒด๋ฅผ ๋ง์ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ ๊ทผ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ OFFSET์ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ์์ผ๋ก ํ์ด์ง์ ๊ตฌํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ "์ปค์ ๊ธฐ๋ฐ ํ์ด์ง(Cursor-based Pagination)" ๋๋ "Seek Method"๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.์ปค์ ๊ธฐ๋ฐ ํ์ด์ง (Seek Method)์ด ๋ฐฉ์์ ๋ง์ง๋ง์ผ๋ก ์กฐํ๋ ํ์ด์ง์ ๋ง์ง๋ง ๊ฐ์ ๊ธฐ์ตํด๋์๋ค๊ฐ, ๋ค์ ํ์ด์ง๋ฅผ ์กฐํํ ๋ ๊ทธ ๊ฐ์ WHERE ์กฐ๊ฑด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.๊ธฐ์กด OFFSET ๋ฐฉ์:SELECT * FROM posts ORDER BY created_at DESC LIMIT 20 OFFSET 10000000; ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง ๋ฐฉ์:-- ์ด์ ํ์ด์ง์์ ๋ง์ง๋ง์ผ๋ก ๋ณด์๋ created_at ๊ฐ์ด '2023-10-27 10:00:00' ์ด์๋ค๊ณ ๊ฐ์ SELECT * FROM postsWHERE created_at ORDER BY created_at DESCLIMIT 20; -- OFFSET ์์ด ๋ฐ๋ก 20๊ฐ ์กฐํ ์ด๋ ๊ฒ ํ๋ฉด DBMS๋ created_at ์ธ๋ฑ์ค์์ '2023-10-27 10:00:00' ์์น๋ฅผ ๋ฐ๋ก ์ฐพ์ ๋ค, ๊ทธ ์ง์ ๋ถํฐ 20๊ฐ์ ๋ฐ์ดํฐ๋ง ์ค์บํ๋ฉด ๋๋ฏ๋ก ์์ฒ๋ง ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฒ๋ฆฌ๋ ๋นํจ์จ์ ์ธ ์์ ์ ํผํ ์ ์์ต๋๋ค. OFFSET์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.๊ด๋ จํด์ ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง(Cursor-based Pagination)์ ๊ฒ์ํด๋ณด์๋ฉด ๋์์ด ๋์ค๊ฑฐ์์.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 47