** ๐Ÿ“ŒDBConnection ํด๋ž˜์Šค ์„ค๊ณ„ (MariaDB ์—ฐ๊ฒฐ) **

Java์—์„œ MariaDB์™€ ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณตํ†ต ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ, ์—๋Ÿฌ ๋ฐฉ์ง€ ํŒ, ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„๊นŒ์ง€ ํฌํ•จ


๐Ÿงฉ ๋ชฉ์ฐจ

  1. DB ์—ฐ๊ฒฐ์ด๋ž€?
  2. DBConnection ํด๋ž˜์Šค์˜ ์—ญํ• 
  3. ๊ธฐ๋ณธ ์—ฐ๊ฒฐ ๊ตฌ์กฐ (JDBC + MariaDB)
  4. ์‹ค์ „ ์˜ˆ์ œ ์ฝ”๋“œ
  5. ์‹ค๋ฌด ์—๋Ÿฌ ๋ฐฉ์ง€ ํŒ
  6. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ
  7. ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ + Notion ์ž‘์„ฑ ํŒ

โœ… 1. DB ์—ฐ๊ฒฐ์ด๋ž€?

ํ•ญ๋ชฉ ์„ค๋ช…
๋ชฉ์  Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ MariaDB(MySQL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•จ
๋ฐฉ๋ฒ• JDBC (Java Database Connectivity) API๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ๊ฒฐ
๊ตฌ์„ฑ ์š”์†Œ Driver, Connection, Statement, ResultSet ๋“ฑ ์‚ฌ์šฉ๋จ

โœ… 2. DBConnection ํด๋ž˜์Šค์˜ ์—ญํ• 

๊ธฐ๋Šฅ ์„ค๋ช…
๐Ÿ“Œ ์—ฐ๊ฒฐ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ์—ฌ๋Ÿฌ DAO ํด๋ž˜์Šค์—์„œ ๋ฐ˜๋ณต๋˜๋Š” DB ์—ฐ๊ฒฐ ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆํ™”
๐Ÿ” ๋ณด์•ˆ์„ฑ ๊ฐ•ํ™” DB ๊ณ„์ • ์ •๋ณด๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
๐Ÿงผ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด ๋ณ€๊ฒฝ ์‹œ ํ•œ ํŒŒ์ผ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ์ „์ฒด ๋ฐ˜์˜๋จ
โš™ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ†ตํ•ฉ try-catch๋กœ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๊ณตํ†ต ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

โœ… 3. ๊ธฐ๋ณธ ์—ฐ๊ฒฐ ๊ตฌ์กฐ (JDBC + MariaDB)

โ‘  ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ

Class.forName("org.mariadb.jdbc.Driver");

โ‘ก DB ์—ฐ๊ฒฐ

Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);

โœ… 4. ์‹ค์ „ ์˜ˆ์ œ ์ฝ”๋“œ ๐ŸŽฏ

๐Ÿ“„ DB.java (๊ณตํ†ต ์—ฐ๊ฒฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค)

// ๐Ÿ“ DB.java
import java.sql.Connection;
import java.sql.DriverManager;

public class DB {
  public static Connection getConnection() throws Exception {
    // 1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
    Class.forName("org.mariadb.jdbc.Driver");

    // 2. ์ ‘์† ์ •๋ณด
    String url = "jdbc:mariadb://localhost:3306/mydb";
    String user = "myuser";
    String password = "mypassword";

    // 3. ์—ฐ๊ฒฐ ๋ฐ˜ํ™˜
    return DriverManager.getConnection(url, user, password);
  }
}

โœ… ์‚ฌ์šฉ ์˜ˆ (DAO์—์„œ ํ™œ์šฉ)

Connection conn = DB.getConnection();

โœ… 5. ์‹ค๋ฌด ์—๋Ÿฌ ๋ฐฉ์ง€ ํŒ ๐Ÿ›ก๏ธ

๋ฌธ์ œ ์ƒํ™ฉ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
โŒ ClassNotFoundException mariadb-java-client-x.x.x.jar ๋“œ๋ผ์ด๋ฒ„ ๋ˆ„๋ฝ โ†’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ํ•„์š”
โŒ Access denied DB ๊ณ„์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ ์˜ค๋ฅ˜ โ†’ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ํ™•์ธ
โŒ Unknown database DB ์ด๋ฆ„ ์˜คํƒ€ ๋˜๋Š” DB ๋ฏธ์ƒ์„ฑ โ†’ DB ๋จผ์ € ์ƒ์„ฑํ•  ๊ฒƒ
๐Ÿ” ์ปค๋„ฅ์…˜ ๋ฏธํ•ด์ œ DB ์—ฐ๊ฒฐ ํ›„ ๋ฐ˜๋“œ์‹œ conn.close() ํ˜ธ์ถœ ํ•„์š”

โœ… 6. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ ๐Ÿ’ฌ

์งˆ๋ฌธ ์š”์  ์ •๋ฆฌ
JDBC ์—ฐ๊ฒฐ ์ˆœ์„œ๋Š”? โ‘  ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ โ†’ โ‘ก URL ์„ค์ • โ†’ โ‘ข getConnection() ํ˜ธ์ถœ
DBConnection ํด๋ž˜์Šค๋ฅผ ์™œ ๋”ฐ๋กœ ๋งŒ๋“œ๋‚˜์š”? ์ค‘๋ณต ์ œ๊ฑฐ, ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜, ๋ณด์•ˆ ํ–ฅ์ƒ ๋ชฉ์ 
์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? try-catch ์‚ฌ์šฉ ๋˜๋Š” throws ๋˜์ ธ DAO์—์„œ ์ฒ˜๋ฆฌ
JDBC์˜ ์ฃผ์š” ๊ฐ์ฒด๋Š”? Connection, PreparedStatement, ResultSet

โœ… 7. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ ๐Ÿง