** ๐MariaDB ์ฐ๋ (JDBC + SQL + ํ
์ด๋ธ ์์ฑ) **
Java์์ MariaDB์ ์ฐ๊ฒฐํ๊ณ SQL๋ก ํ
์ด๋ธ์ ์์ฑํ๊ณ ์ฌ์ฉํ๋ ์ ์ฒด ํ๋ฆ
JDBC ์ฐ๊ฒฐ๋ถํฐ SQL ์คํ๊น์ง ์์ ์ ๋ฆฌ + ๋ฉด์ ๋๋น
๐งฉ ๋ชฉ์ฐจ
- MariaDB๋?
- JDBC + MariaDB ์ฐ๋ ๊ตฌ์ฑ์์
- ์ฐ๋ ์ ์ฐจ ์์
- ํ
์ด๋ธ ์์ฑ SQL ์์
- ์ค์ ํ๋ฆ: Java โ JDBC โ MariaDB
- ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ์ ํด๊ฒฐ๋ฒ
- ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. MariaDB๋?
ํญ๋ชฉ |
์ค๋ช
|
์ ์ |
์คํ์์ค ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (MySQL๊ณผ ํธํ) |
์ฌ์ฉ ๋ชฉ์ |
Java ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ ์ ์ฅ์ |
์ฐ๊ฒฐ ๋ฐฉ์ |
JDBC(Java Database Connectivity)๋ฅผ ํตํด ์ฐ๊ฒฐ |
โ
2. JDBC + MariaDB ์ฐ๋ ๊ตฌ์ฑ์์
๊ตฌ์ฑ ์์ |
์ญํ |
JDBC ๋๋ผ์ด๋ฒ |
Java โ DB ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ค๋ฆฌ |
Connection |
DB์ ์ฐ๊ฒฐ๋ ํต๋ก ๊ฐ์ฒด |
PreparedStatement |
SQL ์คํ ๊ฐ์ฒด (ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅ) |
ResultSet |
SELECT ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋ ๊ฐ์ฒด |
โ
3. ์ฐ๋ ์ ์ฐจ ์์
โ ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver")
โก DB ์ฐ๊ฒฐ
DriverManager.getConnection(URL, ID, PW)
โข SQL ์คํ
PreparedStatement โ executeUpdate() ๋๋ executeQuery()
โฃ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ
ResultSet โ while(rs.next()) { }
โค ์ฐ๊ฒฐ ์ข
๋ฃ
conn.close()
โ
4. ํ
์ด๋ธ ์์ฑ SQL ์์ ๐ฏ
-- ํ์ ํ
์ด๋ธ ์์ฑ ์์
CREATE TABLE members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100),
regdate DATETIME DEFAULT NOW()
);
๐ SQL์ HeidiSQL, DBeaver ๋๋ CLI์์ ์คํ ๊ฐ๋ฅ
โ
5. ์ค์ ํ๋ฆ ์์ : Java โ JDBC โ DB ์ ์ฅ
๐ DB.java (JDBC ์ฐ๊ฒฐ)
public class DB {
public static Connection getConnection() throws Exception {
Class.forName("org.mariadb.jdbc.Driver");
return DriverManager.getConnection(
"jdbc:mariadb://localhost:3306/mydb", "myuser", "mypw"
);
}
}
๐ MemberDAO.java (insert ๋ก์ง)
public void insert(MemberDTO dto) {
try {
Connection conn = DB.getConnection();
String sql = "INSERT INTO members(name, email) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, dto.getName());
ps.setString(2, dto.getEmail());
ps.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
๐ MemberDTO.java
public class MemberDTO {
private String name;
private String email;
// ๊ธฐ๋ณธ ์์ฑ์ + getter/setter ์๋ต
}
โ
6. ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ & ํด๊ฒฐ๋ฒ ๐ก๏ธ
์๋ฌ ๋ฉ์์ง |
์์ธ |
ํด๊ฒฐ ๋ฐฉ๋ฒ |
ClassNotFoundException |
JDBC ๋๋ผ์ด๋ฒ ์์ |
mariadb-java-client.jar ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ |
Access denied |
DB ๊ณ์ /๋น๋ฒ ์ค๋ฅ |
์ฌ์ฉ์ ๊ณ์ ๊ถํ ํ์ธ |
Unknown database |
DB๊ฐ ์์ |
MariaDB์ ๋จผ์ CREATE DATABASE ์คํ |
Connection refused |
ํฌํธ ๋๋ DB ๊บผ์ง |
MariaDB ์๋ฒ ์คํ ์ํ, ํฌํธ(3306) ํ์ธ |
โ
7. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
JDBC ์ฐ๊ฒฐ ์์๋? |
โ ๋๋ผ์ด๋ฒ ๋ก๋ฉ โ โก getConnection โ โข SQL ์คํ โ โฃ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ |
DB ์ฐ๊ฒฐ์ Java์์ ์ด๋ป๊ฒ ํ๋์? |
JDBC ๋๋ผ์ด๋ฒ๋ฅผ ํตํด Connection ๊ฐ์ฒด ์์ฑ |
insert ์ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐ๋์? |
PreparedStatement ์ฌ์ฉ (SQL Injection ๋ฐฉ์ง ํจ๊ณผ๋ ์์) |
ResultSet ์ ์ธ์ ์ฐ๋์? |
SELECT ์ฟผ๋ฆฌ ์คํ ์ ๊ฒฐ๊ณผ ์ ์ฅ์ฉ์ผ๋ก ์ฌ์ฉ |
โ
8. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐งฒ JDBC = Java โ DB ์ฐ๊ฒฐ์ ์ํ ํ์ค API
- ๐ DB ์ฐ๊ฒฐ โ SQL ์คํ โ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ โ ์ฐ๊ฒฐ ์ข
๋ฃ ํ๋ฆ์ผ๋ก ๊ตฌ์ฑ
- ๐
DB.java
ํด๋์ค๋ ๊ณตํต ์ฐ๊ฒฐ ๋ด๋น
- ๐ SQL์ DDL(ํ
์ด๋ธ ์์ฑ), DML(๋ฐ์ดํฐ ์กฐ์) ๊ตฌ๋ถํด์ ๊ด๋ฆฌ
- โ
์ค๋ฌด์์๋ ์ปค๋ฅ์
ํ๊ณผ ํธ๋์ญ์
์ฒ๋ฆฌ๋ ํจ๊ป ๊ณ ๋ คํด์ผ ํจ