๐Ÿ€ Spring Boot ์ดˆ๊ธฐ ์„ธํŒ… (Maven, Eclipse)

ozzingยท2022๋…„ 3์›” 31์ผ
0
post-thumbnail

์ดˆ๊ธฐ ์…‹ํŒ…์— ๊ฒ๋จน์–ด์„œ ๋ฐ˜ ๋…„์ „์— ์ƒ€๋˜ ์ฑ… ์ฑ•ํ„ฐ 1์—์„œ ๋ฉˆ์ถ˜ ์ƒํƒœ๋กœ ์žˆ์—ˆ๋Š”๋ฐ, ๋“œ๋””์–ด ๋‹ค์‹œ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์บก๋””์—์„œ ์Šคํ”„๋ง์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ฒ ๋‹ค๋Š” ๋ชฉํ‘œ๋กœ 2์ฃผ ๋™์•ˆ ์ฑ… ์‹ค์Šต ์‹น ๋”ฐ๋ผ๊ฐ€๊ธฐ๊ฐ€ ๋ชฉํ‘œ๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์ฑ…์€ ๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ์˜ '์Šคํƒ€ํŠธ ์Šคํ”„๋ง ๋ถ€ํŠธ'์ด๋‹ค.
๋‚ด์šฉ์ด๋‚˜ ๋ฐฐ์šด์ ์„ ์ž‘์„ฑํ•˜๊ธฐ ๋ณด๋‹จ, ์ดˆ๊ธฐ ์…‹ํŒ…์„ ํ•˜๋ฉด์„œ ๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๋ธ”๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋ฉด์„œ ํ•˜๋ฉด ๋‚˜์ค‘์— ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ธˆ๋ฐฉ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ ์œผ๋Ÿฌ ์™”๋‹ค!
๋ฌธ์ œ์˜ ์ œ๋Œ€๋กœ ๋œ ํ•ด๊ฒฐ์ฑ…์„ ์•Œ๊ณ  ๊ณ„์‹  ์ด ๊ธ€์„ ์ฝ๋Š” ๋ถ„๋“ค์€ ๋ถ€๋”” ์•Œ๋ ค์ฃผ์‹œ๊ธธ..


์Šคํ”„๋ง ๋ถ€ํŠธ

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์‚ฌ์‹ค Ruby on Rails๋‚˜ Django์— ์˜๊ฐ์„ ์–ป์–ด ๋งŒ๋“ค์–ด์ง„ ์Šคํ”„๋ง์˜ ์„œ๋ธŒ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ ์ €๊ฒƒ ์„ค์ •์ด๋‚˜ ์ถฉ๋Œ๋กœ ์ธํ•ด ์†Œ์š”ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ์ž๋™์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์‹ค ์Šคํ”„๋ง์„ ํ•ด๋ณด์ง€ ์•Š๊ณ  ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ํ•ด๋„ ๊ดœ์ฐฎ์„๊นŒ?์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ์žˆ์–ด์„œ ๊ฒ€์ƒ‰์„ ์ข€ ํ•ด๋ดค๋‹ค.

๋‹ค๋“ค ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ์—” ๋‹น์—ฐํžˆ ์Šคํ”„๋ง์ด ๋งž์ง€๋งŒ, ๊ทธ๋ž˜๋„ ํ•œ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์›Œ์•ผ ํ• ์ง€๋„ ๋ชจ๋ฅด๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นจ๋ฆฌ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š”๊ฑฐ๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋ž€๋‹ค. ์ด๋Ÿฐ ์ฐจ์›์—์„œ ์–ด์ฐจํ”ผ ๋งž๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์Šคํ”„๋ง์€ ์บก๋”” ์ดํ›„์— ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜์ž!

Serverlet / JSP

์ด ์ฏค ์ฑ…์„ ์ฝ๋‹ค๊ฐ€ ์ฒ˜์Œ ๋ณด๋Š” ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.
๋‘ ๋‹จ์–ด์˜ ๊ธฐ๋Šฅ์€ ๊ฐ™์€๋ฐ ๋งก์€ ์—ญํ• ์ด ๋‹ค๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค.
Serverlet์€ Java์ฝ” ๋“œ ์•ˆ์— HTML ์ฝ”๋“œ๊ฐ€ ์กด์žฌ,
JSP๋Š” HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.


Chapter 1

ํ”„๋กœ์ ํŠธ ์…‹ํŒ…

์ผ๋‹จ ์ด๊ฒƒ์ €๊ฒƒ ์„ค์น˜๋ฅผ ํ–ˆ๋‹ค. Intellij๊ฐ€ ์š”์ฆ˜์€ ์œ ํ–‰์ด๋ผ์ง€๋งŒ ์ดˆ์‹ฌ์ž์—๊ฒŒ๋Š” ์ฑ… ๊ทธ๋Œ€๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š”๊ฒŒ ๋‚˜์„ ๊ฒƒ ๊ฐ™์•„ ์ดํด๋ฆฝ์Šค๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

์„ค์น˜ ํ›„ Spring Starter Project๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, Run As Spring Boot App ํ•ด๋ณด์•˜๋‹ค.

์งœ์ž” ์ดˆ๊ธฐ ํ™”๋ฉด..
์ด ํ™”๋ฉด์„ ๋ณด๊ธฐ๊นŒ์ง€ ๊ฝค๋‚˜ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค..

๋‹จ์ˆœํžˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ด ๋ณด๋Š” ๊ฒƒ ๋ฟ์ธ๋ฐ, Run As ์—์„œ none applicable์ด ๋–ด๋‹ค

์ผ๋‹จ Eclipse Marketplace์—์„œ Eclipse Web Developer Tools๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค.

๋กœ๊ทธ๋ฅผ ๋ณด๋‹ˆ pom.xml์ด๋ผ๋Š” ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณ ์žˆ์—ˆ๋‹ค.
๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ .m2 ํŒŒ์ผ์„ ์‹น ๋‹ค ์ง€์›Œ๋ผ ๋˜๋Š” https๋กœ ํ˜ธ์ถœ์„ ๋ฐ”๊ฟ”๋ผ ๊ธฐํƒ€ ๋“ฑ๋“ฑ์„ ์š”๊ตฌํ•˜๋˜๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ๊ทธ๊ฒŒ ์•„๋‹ˆ์˜€๋‹ค.
Maven dependancy๋ฅผ ๋“ฑ๋กํ•˜๊ณ  maven install -> refresh -> maven update project๋ฅผ ์ง„ํ–‰ํ–ˆ๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค!

ํ•œ์ฐธ์˜ ๋‹ค์šด๋กœ๋“œ ๋์— ์ดˆ๊ธฐ ํ™”๋ฉด์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋–ด๋‹ค!
์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ๋„ˆ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋‹ค์–‘ํ•˜๋‹ค๋Š”๋ฐ, ์ค‘๊ฐ„์— ํ•œ ๋ฒˆ ํ•ด๋ด์•ผ๊ฒ ๋‹ค!

์ •์ƒ์ ์œผ๋กœ ๋กœ๋”ฉ ๋˜์—ˆ๋Š”์ง€ 8080ํฌํŠธ์™€ ๋งˆ์ง€๋ง‰ Started ๋กœ๊ทธ๊นŒ์ง€ ํ™•์ธ!

SampleController๋ฅผ ์ด์šฉํ•ด์„œ /hello์— ๋งตํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ด๋ ‡๊ฒŒ ๋งŒ๋ฌผ ๊ณตํ†ต Hello World๋ฅผ ๋กœ์ปฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ณ„๋‹ค๋ฅธ ๊ฐ€๊ณต์—†์ด ๋‹จ์ˆœํžˆ ๋ฌธ์ž์—ด๋งŒ ๋‚˜์˜ค๋Š” ์ด์œ ๋Š” RestController๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ฑ…์ด ์Šคํ”„๋ง์„ ์กฐ๊ธˆ์€ ํ•ด๋ณธ ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚˜ ๊ฐ™์€ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์กฐ๊ธˆ ์–ด๋ ค์šด ์ ๋„ ์žˆ์—ˆ์ง€๋งŒ, ์•„์žฅ์•„์žฅ.. ์žฌ๋ฐŒ๋‹ค.. ๊ณต๋ถ€๋ฅผ ์—ด์‹ฌํžˆ ํ•˜์ž..


Lombok

์ฑ… ๊ทธ๋Œ€๋กœ Lombok์„ ์„ค์น˜ํ•œ๋‹ค.
Eclipse ํด๋”์˜ eclipse.ini์—

-vm
C:\Program Files\Java\jdk-15.0.1\bin\javaw.exe
--launcher.library
C:\Users\๋น„๋ฐ€\.p2\pool\plugins\org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650

์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ์ž ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ถ”๊ฐ€ํ•˜๋ฉด lombok.jar ํŒŒ์ผ์ด ์•Œ์•„์„œ ๋”ฑ ๋“ค์–ด์™€ ์žˆ๋‹ค!
ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์•ฝ๊ฐ„์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


Chapter 2

๋””๋น„ ์…‹ํŒ…

2์žฅ์€ ์ฑ…์ด๋ž‘ ๋‹ค๋ฅธ๊ฒŒ ๋งŽ์•„ ํž˜๋“ค์—ˆ๋˜ ์ฑ•ํ„ฐ๋‹ค...
ํ”„๋กœ์ ํŠธ ์…‹ํŒ…์„ ์™„์ „ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ ๊ฑด ์ฒ˜์Œ์ธ์ง€๋ผ ๋”ฐ๋ผํ•˜๊ธฐ๋งŒ ๋ฐ”๋นด๋Š”๋ฐ, 2017๋…„ ์ฑ…์ด ์ง‘ํ•„๋œ ์ดํ›„์— ๋งŽ์ด ๋ฐ”๋€Œ์–ด์„œ ๋ฒ„์ „ ๋งž์ถ”๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค. deprecated ๋œ ๊ฒƒ๋„ ๋งŽ์•„์„œ ๊ณ„์†ํ•ด์„œ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ–ˆ๋‹ค! ใ… 

๋จผ์ € mysql ์ƒ์„ฑํ•˜๊ณ  application.properties ์ž‘์„ฑํ•˜๋Š”๋ฐ ์ด ๊ณผ์ •๋ถ€ํ„ฐ๊ฐ€ ๊ณ ๋‚œ์˜ ์‹œ์ž‘์ด์˜€๋‹ค.

  1. com.mysql.jdbc.Driver ๋นจ๊ฐ„ ์ค„
    => com.mysql.cj.jdbc.Driver
  2. Public Key Retrieval is not allowed
    => ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ๊ดœ์ฐฎ์•˜์ง€๋งŒ ์ด์ œ๋Š” url ๋’ค์— &allowPublicKeyRetrieval=true๋ฅผ ๋ถ™์—ฌ์ค˜์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค
  3. Error creating bean with name 'entityManagerFactory'
    => ์ด ์นœ๊ตฌ.. ์ผ๋‹จ pom.xml์— ๋‹ค์Œ dependancy๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
		
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>

๋˜ ์ดํ›„์—๋„ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ ์ด ์žˆ๋Š”๋ฐ, ๊ทธ ๋•Œ๋ถ€ํ„ฐ๋Š” ์…‹ํŒ…์€ ์ œ๋Œ€๋กœ ๋œ ์ƒํƒœ์˜€๊ณ  ๋‚ด ์‹ค์ˆ˜์˜€๋‹ค! Annotation์— ์˜คํƒ€๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ์ž˜๋ชป ์“ด๋‹ค๊ฑฐ๋‚˜ import๋ฅผ ์ž˜๋ชปํ–ˆ๊ฑฐ๋‚˜ ๋ญ ๊ทธ๋Ÿฐ ์‹ค์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

์ด ์„ธ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜๋‹ˆ ์„œ๋ฒ„๋Š” ๋Œ์•„๊ฐ”๋‹ค.
๋‹ค๋งŒ ๋””๋น„ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ๋‚จ์€ ๋ฌธ์ œ๋“ค์€ ์ „๋ถ€ ๊ฐ™์€ ์˜ค๋ฅ˜์˜€๋‹ค.
Access denied for user 'jpa_user'@'localhost' (using password: YES)

๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”๋ฐ ๊ณ„์†ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
root๋กœ ์ ‘์†ํ•ด์„œ ์ƒˆ๋กœ user๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ถŒํ•œ์„ ์ค€ ๋’ค flush privileges ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๋„ ์—†์—ˆ๋‹คใ… 

๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 8์ž ์ด์ƒ์ด ๋งž๋Š”์ง€, ip์— ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†๋Š”๊ฑด์ง€, ๋ฒ„์ „์ด ๋‹ค๋ฅธ๊ฑด์ง€
์ด๊ฒƒ์ €๊ฒƒ ๊ณ ๋ฏผํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹œ๋„ํ•ด๋ณด๋Š๋ผ ์‹œ๊ฐ„์„ ์—„์ฒญ ๋ณด๋ƒˆ๋Š”๋ฐ.. ๊ฒฐ๊ณผ๋Š” ์ฐธํ˜นํ–ˆ๋‹ค.

๊ทธ๋ƒฅ ์‚ฝ์งˆX์‚ฝ์งˆX์‚ฝ์งˆ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค ๋‚˜๋Š”..
Bitnami WAMP ํ™•์ธ ํ•˜๋‹ˆ MySQL๊ณผ Apache ์„œ๋ฒ„๊ฐ€ ์ผœ์ ธ ์žˆ๋”๋ผ...

์„œ๋ฒ„๋ฅผ ๋‹ค ๋„๊ณ  ๋‚˜๋‹ˆ ๋“œ๋””์–ด ์—ฐ๊ฒฐ์ด ๋˜์—ˆ์ง€๋งŒ, ํ…Œ์ด๋ธ”์ด ์ƒ๊ธฐ์ง€ ์•Š์•˜๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋Š”

  1. Error excuting DDL
    => ๋ฒ„์ „์„ ๋งž์ถฐ์„œ spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect๋กœ ๋ณ€๊ฒฝ!
    ์ด ์™€์ค‘์— ํ•œ๋ฒˆ ๋” ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋Š”๋ฐ ์ € Dialect ๋’ค์— ์ŠคํŽ˜์ด์Šค๊ฐ€ ํ•˜๋‚˜์žˆ์–ด์„œ...์˜ค๋งˆ์ด๊ฐ€์‰ฌ ์ด๋Ÿฐ๊ฑฐ ์ฃผ์˜ํ•˜์ž!

<์ตœ์ข… application.properties>

spring.jpa.database=mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/jpa_ex?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
spring.datasource.username=jpa_user
spring.datasource.password={๋น„๋ฐ€๋ฒˆํ˜ธ}

spring.jpa.hibernate.ddl-auto=create
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
logging.level.org.hibernate=info
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

๊ณ ๋‚œ๊ณผ ์—ญ๊ฒฝ ๋์— ๋ฉ€์ฉกํ•˜๊ฒŒ ํ…Œ์ด๋ธ” ์ƒ๊ธด๊ฑฐ ํ™•์ธ! ์„ฑ๊ณต!
์—ฌ๊ธฐ์„œ ddl-auto=create๋Š” ๊ธฐ์กด ํ…Œ์ด๋ธ” ์‚ญ์ œ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.
์ง€๊ธˆ์€ ์ฑ… ๋”ฐ๋ผ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ–ˆ์ง€๋งŒ ์ดํ›„์— update๋กœ ๋ฐ”๊พธ์–ด ์ฃผ์—ˆ๋‹ค.


๋ ˆํฌ์ง€ํ† ๋ฆฌ

์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋Š” ๋ญ ์ฝ”๋“œ ์“ฐ๋Š”๊ฑด ์ญ‰ ๋”ฐ๋ผํ–ˆ์ง€๋งŒ JUnit test ์‹คํ–‰์ด ์•ˆ๋๋‹ค.

dependancy ์ถ”๊ฐ€ํ•ด๋„, ์ „์ฒ˜๋Ÿผ maven update project๋„ ํ•ด๋ดค๋‹ค.
์š”์ƒํ•˜๊ฒŒ JUnit์— ๊ธฐ๋ก์€ ์žˆ๋Š”๋ฐ ์ดˆ๋ก์ด๋“  ๋นจ๊ฐ•์ด๋“  ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€๊ฐ€ ์ „ํ˜€ ์•ˆ๋œฌ๋‹ค.

์ด์ฏค๋˜๋ฉด ๋‹น์—ฐํžˆ ๋ฒ„์ „ ๋ฌธ์ œ๊ฒ ๊ฑฐ๋‹ˆ ํ–ˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š๋ƒ๊ฐ€ ๋ฌธ์ œ์˜€๋Š”๋ฐ run as configuration๊ฐ€์„œ Junit 5๋กœ ๋˜์–ด์žˆ๋Š”๊ฑธ 4๋กœ ๋ฐ”๊พธ์–ด์ค˜์•ผ ํ–ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์ด SQL์ด ์ˆ˜ํ–‰๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค!

"์•„๋‹ˆ ๊ทผ๋ฐ ๋งค๋ฒˆ ์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟ” ์ค˜์•ผํ•˜๋‚˜? ๊ท€์ฐฎ๋‹ค"๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค๋ฉด์„œ, ๊ทธ๋ƒฅ ํ”„๋กœ์ ํŠธ ์ž์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ 5๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋‹ˆ๊นŒ ๋งค๋ฒˆ ํ•  ํ•„์š”๋Š” ์—†์—ˆ๋‹ค! ํŽธ-์•ˆ

์ด ์‹œ์ ์—์„œ ์—ฌ๋ ค ํ…Œ์ŠคํŠธ๋“ค์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ddl-auto๋ฅผ create -> update๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.

Spring boot 2.x๋ถ€ํ„ฐ๋Š” findOne์ด ์—†์–ด์ง€๋Š” ๋ฐ”๋žŒ์— boardRepo.findById(1L).get(); ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ๋ฉด ๋œ๋‹ค.
์ด์œ ๋Š” findById์˜ return type์ด Optional ์ด๊ธฐ ๋•Œ๋ฌธ!

๋‹ค ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด pom.xml Qdomain ์„ค์ •์—์„œ execution ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์ด๋ธ ๋ฆฌ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin -->
<dependency>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-resources-plugin</artifactId>
     <version>3.0.2</version>
 </dependency>

๋˜๋Š” ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ ์ดํ›„ RunAs -> Maven install(build), Maven -> update project ํ•ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ž˜๋„ ๊ณ„์† ํ•ด๊ฒฐ์ด ์•ˆ๋ผ์„œ ์œ„์— ์ถ”๊ฐ€ํ–ˆ๋˜ dependancy์˜ ๋ฒ„์ „์— ๊ณ„์† ์›Œ๋‹์ด ๋–ด์—ˆ๋Š”๋ฐ ๊ทธ๊ฑฐ ์ง€์šฐ๋‹ˆ๊นŒ ํ•ด๊ฒฐ๋๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€