๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ/Spring8

[Spring] ์„ธ์…˜(Session), ์ฟ ํ‚ค(Cookie), ์บ์‹œ(Cache) ์„ธ์…˜(Session), ์ฟ ํ‚ค(Cookie), ์บ์‹œ(Cache)๋Š” ๋ชจ๋‘ ์›น ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด๋ฉฐ ์‚ฌ์šฉ์ž์˜ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”(์‘๋‹ต ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๊ณ  ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ)ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋“ค์€ ๋ชจ๋‘ ํ†ตํ•ฉํ•ด์„œ "์›น ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ˆ "์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›น ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ˆ ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์„ธ์…˜(Session) ์„ธ์…˜์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ ‘์†ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž์ธ ์„ธ์…˜ ID๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ์ด ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” ๊ทธ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์„ธ์…˜์„ ํ†ตํ•ด ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•œ ์ƒํƒœ.. 2023. 7. 5.
[Spring] ์Šคํ”„๋ง ๋นˆ(Bean)์ด๋ž€? ๋นˆ(Bean)์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. ๋นˆ์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ, ๊ด€๋ฆฌ ๋ฐ ์กฐ๋ฆฝ๋˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋“ฑ๋ก๋œ ๋นˆ์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ƒ์„ฑ๋˜๊ณ , ํ•„์š”ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋นˆ์„ ๋“ฑ๋กํ•˜๋ ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค์— @Component, @Service, @Repository, @Controller ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ๊ฐ๊ฐ ์ปดํฌ๋„ŒํŠธ, ์„œ๋น„์Šค, ๋ ˆํฌ์ง€ํ† ๋ฆฌ, ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ์˜ ์—ญํ• ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์Šคํ”„๋ง ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ฆฌ: https://hanav.tistory.com/191 Spring ์•„๋…ธํ…Œ์ด์…˜ ์ •๋ฆฌ @Component: ์Šคํ”„๋ง์˜ ์ปดํฌ๋„ŒํŠธ.. 2023. 7. 5.
[Spring] JPA ๋ž€? @Component๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ ํด๋ž˜์Šค๋Š” ์ž๋™์œผ๋กœ ๋นˆ์œผ๋กœ ๋“ฑ๋ก์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ๊ธฐ์–ต์—๋Š” Entity ํด๋ž˜์Šค์—์„œ @Component๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ ์˜์•„ํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ, ๋ถ€๋„๋Ÿฝ๊ฒŒ๋„ ๋‚ด๊ฐ€ JPA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์–ด๋…ธํ…Œ์ด์…˜์„ ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ๋’ค๋Šฆ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. JPA๋ž€? JPA๋Š” Java Persistence API์˜ ์•ฝ์ž๋กœ, ์ž๋ฐ”์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. JPA๋Š” ์ž๋ฐ”๋กœ RDBMS๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ„๋„์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋˜ํ•œ, JPA๋Š” ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ฒด๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” .. 2023. 7. 5.
[Spring] Spring ์•„๋…ธํ…Œ์ด์…˜ ์ •๋ฆฌ @Component: ์Šคํ”„๋ง์˜ ์ปดํฌ๋„ŒํŠธ ์Šค์บ๋‹์— ์˜ํ•ด ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. @Controller: ์Šคํ”„๋ง MVC์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. @Service: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฃผ๋กœ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. @Repository: ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์˜ ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. @Configuration: ์Šคํ”„๋ง ๋นˆ์„ ์ •์˜ํ•˜๋Š” ์„ค์ • ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. @Bean ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑํ•œ๋‹ค. @Autowired: ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํ•ด๋‹น ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ .. 2023. 7. 5.
[Spring] DTO์™€ Entity, ์™œ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ• ๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๊ฐ€ controller์—์„œ reviewCheck ๋ผ๋Š” ๊ฐ’์„ Y๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ์•ผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค๊ฐ€ ๋“  ์˜๋ฌธ์ด๋‹ค. //Controller //๋ฆฌ๋ทฐ ๋“ฑ๋ก ์—ฌ๋ถ€ ์ฒดํฌ service.regReviewCheck(reviewDTO); //ServiceImpl //๋ฆฌ๋ทฐ ๋“ฑ๋ก ์—ฌ๋ถ€ ์ฒดํฌ @Override public void regReviewCheck(ReviewDTO reviewDTO) { Optional registerEntity = registerRepository.findByUseridAndClassCode(reviewDTO.getUserid(), reviewDTO.getClassCode()); RegisterEntity register = registerEntity.get(); register.set.. 2023. 6. 29.
[Spring] SpringToolSuite4 ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์•ˆ๋  ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• SpringToolSuite4 ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์•ˆ๋  ๋•Œ..! sts4 jar ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œํ•˜๊ณ  ์‹คํ–‰์‹œํ‚ฌ ๋• ๋๋Š”๋ฐ ํด๋”๋ฅผ ๋ฐ”๊พธ๋‹ˆ๊นŒ sts.exe๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด ๋ฐ˜์‘์ด ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿด ๋• SpringToolSuite4.ini ํŒŒ์ผ์„ ๋“ค์–ด๊ฐ€์„œ ์„ค์ •์„ ์กฐ๊ธˆ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ์ฒ˜์Œ ํŒŒ์ผ ์ƒํƒœ ์ด ์ƒํƒœ์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ์ˆ˜์ •ํ•ด ์ฃผ๋ฉด ๋๋Š”๋ฐ 1. -vm ์ฝ”๋“œ vm ์€ ๋ณธ์ธ ์ž๋ฐ” ๊ฒฝ๋กœ์— \javaw.exe ๋ถ™์ด๋ฉด ๋œ๋‹ค. C:\Program Files\Java\jdk-17\bin\javaw.exe 2. ๋งˆ์ง€๋ง‰ javaagent ์ฝ”๋“œ ์ด ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค -javaagent:C:\sts-4.18.1.RELEASE\lombok.jar ๋ฐ”๋€ ์ƒํƒœ ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ๋ฐ”๊ฟจ์„ ๋•Œ๋Š” ์ด๋Ÿฐ ๊ธด ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค. ๋‘˜ ๋‹ค.. 2023. 6. 3.
[Spring] Spring Boot ๋ฐฐํฌํ•˜๊ธฐ Spring Boot ๋ฐฐํฌํ•˜๊ธฐ 1. gradle build ํ•˜๊ธฐ -> build๋ผ๋Š” ํด๋” ์ƒ๊น€ 2. jar ํŒŒ์ผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ๋! 2023. 5. 30.
[Spring] ๊ฒŒ์‹œํŒ ํ”„๋กœ์ ํŠธ ํ•  ๋•Œ ์œ ์šฉํ–ˆ๋˜ sql๋ฌธ ๊ธ€ ๋ณต์‚ฌํ•˜๊ธฐ INSERT INTO tbl_board (writer, title, userid, content) SELECT writer, title, userid, content FROM tbl_board; ํŽ˜์ด์ง• ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๊ธ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋งŽ์•„์•ผํ•ด์„œ ์ด์ „ ๊ธ€ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋ฅผ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ์ผ๋ จ ์ˆซ์ž ์žฌ์ •๋ ฌ (mysql ๋ฐฉ์‹) SELECT @seq:=@seq+1 AS seq, seqno, title, writer, regdate FROM (SELECT @seq:=0) a, tbl_board b ORDER BY seq desc; ๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด seqno ์‚ฌ์ด์— ๊ตฌ๋ฉ์ด ์ƒ๊ธฐ๋Š”๋ฐ, ์ด๋ฅผ ์žฌ์ •๋ ฌํ•˜๋Š” sql๋ฌธ์ด๋‹ค. 10๊ฐœ์”ฉ ๋Š๊ธฐ SELECT @seq:=@seq+1 AS seq, seqno, title, wr.. 2023. 5. 3.

"); wcs_do();