JPA & JDBC
JDBC
개발하는지호
2024. 1. 20. 23:07
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 패키지에서 제공하는 Properties 활용
resources 폴더에 jdbc.properties라는 파일을 생성 후
해당 파일 내에 DB 연결과 관련된 설정 정보를 작성해두고
DBUtil.java가 그 파일을 읽어서 DB 커넥션을 수행할 수 있도록 작성
*/
public static Connection getConnection() {
// 코드 작성 후 App.java에서 호출 가능하도록
Properties prop = new Properties();
try {
FileInputStream fs = new FileInputStream("src/main/java/resources/jdbc.properties");
prop.load(fs);
prop.list(System.out);
final String DB_URL = prop.getProperty("url");
final String DATABASE_NAME = prop.getProperty("database");
final String USER = prop.getProperty("username");
final String PASSWORD = prop.getProperty("password");
return DriverManager.getConnection(DB_URL + DATABASE_NAME, USER, PASSWORD);
} catch (IOException | SQLException e) {
e.printStackTrace();
}
return null;
}
}
이후 DB 를 연결하게 하고, 쿼리를 실행 한 후 DB에 있는 데이터를 활용한다.
package dev.syntax.step05statemanaging.step03practice;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class FileReader {
public List<Member> findAll() throws SQLException { // findAll()과 동작은 동일함
List<Member> members = new ArrayList<Member>();
String selectQuery = "SELECT * FROM info";
Connection connection = DBUtil.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(selectQuery);
// DBMS에게 쿼리(SQL)를 전달할 객체 생성
try (connection; statement; resultSet) {
while (resultSet.next()) {
String id = resultSet.getString("id");
String password = resultSet.getString("password");
members.add(new Member(id, password));
}
} catch (SQLException e) {
e.printStackTrace();
}
return members;
}
}