๐Ÿค– Backend

์ตœ๊ทผ ํšŒ์‚ฌ ์—…๋ฌด ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋กœ์šฐ๋ ˆ๋ฐธ ๊ธฐ์ˆ (์ด๋ผํ•˜์ง€๋งŒ ํ”ํžˆ๋“ค ๋ ˆ๊ฑฐ์‹œ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ์ˆ )๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ  ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋Š” ์ตœ์‹  ๊ธฐ์ˆ  ๋ฐ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ฒ„์ €๋‹ ๊ด€๋ฆฌ ์‹คํŒจ๋กœ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์˜€๋‹ค. ์›์ธ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ SSLHanndshakeException์œผ๋กœ ์ธํ•ด DB Connection ํš๋“์„ ์‹คํŒจํ•ด conn์ด null์ธ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.The last packet successfully received from the server was 65 milliseconds ago. The last packet sent successfully to the server was 61 milliseconds ago. at java.base/jdk.internal.reflect.NativeConstructo..
์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ์–ด์„œ, ์˜ค๋žœ๋งŒ์— ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์Šคํ”„๋ง ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด ์‹คํ–‰์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๊ณ  ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ ๋กœ๊ทธ์—๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋‚จ๊ณ  Build ๊ฒฐ๊ณผ์—๋„ ์—๋Ÿฌ๊ฐ€ ๊ฐ€๋“ํ–ˆ๋‹ค. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ํ˜„์ƒ ๋ถ„์„ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ์ง€๋งŒ ๊ฒฐ๊ตญ ์•„๋ž˜ ๋กœ๊ทธ๊ฐ€ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ์—ˆ๋‹ค. java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/security/ec/SunEC$1 with JaCoCo 0.8.8.202204050719/5dcf34a. at org.jacoco.agent.rt.internal_b6258fc.CoverageTransformer.transfo..
@DataJpaTest๋ฅผ ์ด์šฉํ•œ Repository ํ…Œ์ŠคํŠธ ์ค‘ ๋ณธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋˜ DDL์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. H2 ↔๏ธ MySQL ๋ฌธ๋ฒ• ์ฐจ์ด๋กœ ์ธํ•ด ํ…Œ์ด๋ธ”์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ application-test.properties ๋ฅผ ๊ณ„์† ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๋ฌธ๋“, ์ง€๋‚œ ๋ฒˆ์—๋„ @DataJpaTest ํ…Œ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ @AutoConfigureTestDatabase์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ธฐ์–ต์ด๋‚˜์„œ ์‹œ๋„ํ•˜์˜€๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋„ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ๋ก์„ ๋ฏธ๋ค„๋‘๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด ์ฐธ์— ๋ธ”๋กœ๊น…ํ•˜๊ณ  ์žฅ๊ธฐ ๊ธฐ์–ต์œผ๋กœ ๊ฐ€๋ณด์ž. ๋ฌธ์ œ ๋ถ„์„ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ธํ„ฐ๋„ท์—๋„ ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ DDL ํ˜น์€ SQL ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‹ค. ๊ณตํ†ต์ ..
์†Œ๋งˆ ๋ฉ˜ํ† ๋‹˜๊ณผ ๋ฐฐํฌ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๋„์ค‘์— ํ„ฐ๋ฏธ๋„์„ ์ผœ๋Š” ๋‚˜๋ฅผ ๋ณด๊ณ  ๊นœ์ง ๋†€๋ผ๋ฉฐ ํ„ฐ๋ฏธ๋„๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋ƒ๊ณ  ๋ฌผ์—ˆ๋˜ ๊ฒƒ์ด ์•„์ง๋„ ๊ธฐ์–ต๋‚œ๋‹ค. ์ปฌ๋Ÿผ๋ช… ์กฐ์ฐจ๋„ ์ œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š๋Š” mysql cli๋ฅผ ์ผ๋˜ ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด๋ดค๋”๋‹ˆ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ฐฐ์šธ ๋•Œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋งŒ ๋ด์™”๊ณ  ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊นŒ์ง€๋งŒ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„๊นŒ์ง€ ๊ฐ€๋ณด์ง€ ์•Š์•„ ๋ถˆํŽธํ•จ์„ ํฌ๊ฒŒ ๋Š๊ปด๋ณด์ง€ ๋ชปํ•ด์„œ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. Datagrip์„ ๋ฐฐ์šฐ๋ฉด์„œ ์‹ ์„ธ๊ณ„๋ฅผ ๋ง›๋ณด๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ์— ์ธ„๋ผ์ดํ•ด์™”๋Š”๋ฐ, ๋ถˆํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ชป๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜๋‚˜ ์•„์‰ฌ์šด ์ ์€ public subnet์— ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•ด์„œ ๋ณด์•ˆ์ ์œผ๋กœ ์•„์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด์˜€๋‹ค.... SSH Tunneling์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ํŽธํ•˜๊ฒŒ DB๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ Transaction ์ด๋ž€? (2020.12.22)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜, Transaction ์ด๋ž€? Transaction์ด๋ž€, DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋œปํ•œ๋‹ค. DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋ž˜์˜ SQL์„ ์ด์šฉํ•ด์„œ DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. SELECT INSERT DELETE UPDATE ์ฐฉ๊ฐํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€ ์ž‘์—…์˜ ๋‹จ์œ„๋Š” SQL ํ•œ ๋ฌธ์žฅ์ด ์•„๋‹ˆ๋‹ค. ๋งŽ์€ SQL ๋ช…๋ น๋ฌธ๋“ค์„ ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ž‘์—…์˜ ๋‹จ์œ„๋‹ค. ๊ณ„์‹œํŒ์„ ์˜ˆ๋ฅผ๋“ค์–ด ๋ณด๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ , ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. ๊ทธ ํ›„์— ๋‹ค์‹œ ๊ฒŒํŒ์— ๋Œ์•„์™”์„ ๋•Œ, ๊ฒŒ์‹œํŒ์€ ์ž์‹ ์˜ ๊ธ€์„ ํฌํ•จํ•œ ์—…๋ฐ์ดํŠธ๋œ ๊ฒŒ์‹œํŒ์„ ๋ณด๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ DB ์ž‘์—…..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ ๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ Maven๊ณผ Gradle ๋น„๊ตํ•˜๊ธฐ (2021.01.06)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ๋ž€? ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, ํ…Œ์ŠคํŠธ ๋นŒ๋“œ, ๋ฐฐํฌ ๋“ฑ์˜ ์ž‘์—…์„ ์œ„ํ•œ ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์„ฑํ•œ java ์ฝ”๋“œ์™€ ํ”„๋กœ์ ํŠธ ๋‚ด์— ํ•„์š”ํ•œ ๊ฐ์ข… xml, properties, jar ํŒŒ์ผ๋“ค์„ JVM์ด๋‚˜ WAS๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง•ํ•ด์ฃผ๋Š” ๋นŒ๋“œ ๊ณผ์ • = ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์ข…๋ฅ˜์™€ ๋ฒ„์ „๋“ค, ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ Maven Maven์€ Java์šฉ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ๋กœ Apache์˜ Ant ๋Œ€์•ˆ์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ๋‹ค. ๋นŒ๋“œ ์ค‘์ธ ํ”„๋กœ์ ํŠธ, ๋นŒ๋“œ ์ˆœ์„œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ ๊ด€๊ณ„๋ฅผ pom.xml ์— ๋ช…์‹œํ•œ๋‹ค. ์™ธ๋ถ€์ €์žฅ์†Œ์—..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ SQL Tutorial (2021.01.17)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Aggreate Functions aggregate functions(์ง‘๊ณ„ ํ•จ์ˆ˜)์€ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ˆ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค. arithmetic operators๋Š” ํ•œ ํ–‰์˜ ์—ด๊ฐ„์˜ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, aggregate functions์€ ํ–‰ ์ „์ฒด์— ๊ฑธ์ณ์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. COUNT Counting all rows COUNT ๋Š” ํŠน์ • ์—ด์˜ ์ˆซ์ž๋ฅผ ์„ธ๋ฆฌ๋Š” aggregate function์ด๋‹ค.. ์•„๋ž˜์˜ ๋‘ SQL ๋ฌธ์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. SELECT COUNT(*) FROM tutorial.aapl_historical_stock_price SELECT * FROM tutorial.aapl_historical_sto..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ java.sql.SQLException: Incorrect string value (2021.03.28)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. java.sql.SQLException: Incorrect string value: '\xEC\xB0\xBD\xEC\xB0\xBD...' for column `mm_server`.`restaurant`.`name` at row 1 Query is: insert into restaurant (deliveryable, description, location, name, price, type) values (?, ?, ?, ?, ?, ?), parameters [0,,3,'์ฐฝ์ฐฝ๊ตญ๋ฐฅ',0,0] java thread: http-nio-8080-exec-1 at..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ ์Šคํ”„๋ง์˜ application.properties ์„ค์ • (+ ddl ์„ค์ •, DB url/port) (2021.07.26)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. application.properties spring.jpa.hibernate.ddl-auto=update spring.jpa.generate-ddl=false spring.datasource.url=jdbc:mariadb//{PATH}/{DATABASE} spring.datasource.username={USERNAME} spring.datasource.driver-class-name=org.mariadb.jdbc.Driver jpa ddl ์„ค์ • ddl-auto update : ๊ธฐ์กด์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ JPA์— ์˜ํ•ด ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ถ”..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ [MySQL] DB Authentication ๋ฌธ์ œ | ERROR 1698 | Access denied for user 'root' (2021.07.26)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. MariaDB 10.0 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋ณด์•ˆ ๋ฐฉ์‹์ด 'Unix Socket' ๋ฐฉ์‹์ด ์ ์šฉ๋œ๋‹ค. mysql -u root -p password spring datasource ์ ‘์† ๋”ฐ๋ผ์„œ ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์œ„ํ•ด์„œ๋Š” plugin ์„ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. ๋งŒ์•ฝ ์ดˆ๊ธฐ ์ ‘์†์ด๋ผ๋ฉด, ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. $ sudo mysql mysql> use mysql; mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; mysql> CREATE USER 'user'@'%' ..
sckwon770
'๐Ÿค– Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก