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

๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC7

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl -์ž‘์„ฑ์ค‘- ์ง€์ •ํ•œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC 2024. 4. 1.
Caused by: java.sql.SQLSyntaxErrorException: Table 'test8.cardlist' doesn't exist -์ž‘์„ฑ์ค‘- ๋„ค, ์ •ํ™•ํžˆ ๋ง์”€ํ•˜์…จ์Šต๋‹ˆ๋‹ค. spring.jpa.hibernate.ddl-auto=create ์„ค์ •์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ, JPA/Hibernate๋Š” ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋“ค์„ ์Šค์บ”ํ•˜๊ณ  ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—”ํ‹ฐํ‹ฐ ๊ฐ„์— ๊ด€๊ณ„๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๊ณ , ์ด ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™ธ๋ž˜ ํ‚ค(foreign key)๋‚˜ ์กฐ์ธ ํ…Œ์ด๋ธ”(join table)์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์ด ๊ด€๊ณ„์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ์˜ ํ…Œ์ด๋ธ”์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JPA/Hibernate๊ฐ€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์ˆœ์„œ ๋ฌธ์ œ: JPA/Hibernate๊ฐ€ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๊ด€๊ณ„์— ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋“ค์˜ ํ…Œ์ด๋ธ”์„ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŠน์ • ํ…Œ.. ๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC 2024. 4. 1.
JDBC jdbc๋ž€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ SQL์„ ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์—ฐ๊ฒฐํ•˜๋Š”๋ฒ• ์šฐ์„  DB์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค. package dev.syntax.step05statemanaging.step03practice; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /* * DB์™€ ๊ด€๋ จ๋œ ๊ณตํ†ต ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋“ค์„ ๋ณ„๋„์˜ ์œ ํ‹ธ ํด๋ž˜์Šค๋กœ ์ž‘์„ฑ */ public class DBUtil { /* java.util ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•˜๋Š”.. ๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC 2024. 1. 20.
MySQL ์ž˜๋ชป๋œ ๋ฌธ๋ฒ•์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ You have an error in your SQL syntax; check the manual that correspondsto your MySQL server version for the right syntax to use near ~~ ์ด๋Š” ๋ณดํ†ต ์ฟผ๋ฆฌ๋ฌธ์˜ ๋ฌธ๋ฒ•์ด ํ‹€๋ ธ๊ธฐ์— ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ฟผ๋ฆฌ ๋ฌธ๋ฒ•์„ ๋‹ค์‹œ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC 2024. 1. 18.
"select * from todo where id = ?" ์‚ฌ์šฉ๋ฒ• ๋‚˜๋Š” ์›ํ•œ๋Š” ๊ฐ’๋งŒ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ์„ ํ†ตํ•ด ์ฒ˜์Œ ๊ตฌํ˜„ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ query๋ฌธ ๊ฐ™์€ ๊ฒฝ์šฐ where id = ? ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•ด๋†“๊ณ  statement.setInt(1, todoId) ์ด๋Ÿฐ์‹์œผ๋กœ ์„ค์ • ํ•ด๋‘๋ฉด todoId์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋งŒ ์ถ”์ถœํ•œ๋‹ค. setInt(1, todoId) ์—ฌ๊ธฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ค‘์— 1 ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ?๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๋•Œ ๋ช‡๋ฒˆ ์งธ ์ž๋ฆฌ์˜ ?์— todoId ๊ฐ’์„ ๋„ฃ์„์ง€ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค!! ๋งŒ์•ฝ ?๊ฐ€ 3๊ฐœ์ด๊ณ  2๋ฒˆ์งธ ?์— ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด setInt(2, todoId) ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค. public Todo findById(int todoId) throws SQLException { // ex. findById(2); // id๊ฐ€ 2๋ฒˆ์ธ Todo ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ Todo todo .. ๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JPA & JDBC 2024. 1. 18.