3일치 밀린 수업을 따라가려니 정신이 없다.
구조 자체를 이해해야 하는데 따라가기 급급하다보니 이해하는 과정을 못거치고 있다.
어디에서 어떤 메소드가 어떤 작용을 하는지를 한번 집고 넘어가야 할 듯 하다.
현재 완성중인 작업에서는
공통된 메소드를 효율적으로 사용하기위한 common 패키지에 xml작성클래스와
jdbc에서 자주 사용하는 작업들을 모아둔 jdbctemplate를 활용하고있다.
또한 필요한 run 클래스와 view클래스를 사용하며
작업을 수행키 위한 기본 employee 클래스와, service 클래스, dao클래스를 잉요하고있다.
dao가 생소했는데 dao는 Data Access Object로 데이터베이스나 다른 저장소와 상호작용하기 위한 객체이다.
Run 클래스는 애플리케이션을 실행하기 위한 메인 메소드를 가지고있는 패키지로 지금까지 사용해온 패키지이다.
view 클래스는 사용자 인터페이스 요소로 사용자의 요청과 응답을 보여주는 화면인데
switch 문을 사용한다던가해서 화면을 구성하고 있다.
model 패키지 에는 비즈니스로직(업무에 필요한 데이터 처리수행) 을 구현하는 영역으로 데이터를 가공하고 db에 접근 추출, 입력, 갱신등을 처리하는데 dao가 바로 여기에 속한다.
vo 패키지에 지금은 employee클래스를 작성중인데 데이터베이스의 각 컬럼 개체 저장용 클래스로 vo패키지는 db의 도메인 정보를 클라이언트에 전달할 때 그 도메인 단위 정보를 vo에 구현한다.
일단은 구조의 이해가 중요한 듯 싶다.
초간단 흐름 이해
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "username";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
// Create and execute a simple query
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
// Process the query results
while (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
// Close resources
resultSet.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
드라이버 로드: 데이터베이스 연결을 위해 사용할 JDBC 드라이버를 클래스패스에 추가하고, 드라이버를 로드합니다. 드라이버는 데이터베이스 벤더마다 다르며, Class.forName("드라이버클래스이름") 메서드를 사용하여 드라이버를 로드할 수 있습니다.
데이터베이스 연결: DriverManager.getConnection(url, username, password) 메서드를 사용하여 데이터베이스에 연결합니다. 여기서 URL은 데이터베이스의 위치와 연결 정보를 나타내고, username과 password는 데이터베이스 접속 권한을 제공합니다.
Statement 또는 PreparedStatement 생성: SQL 쿼리를 실행하기 위해 Statement 또는 PreparedStatement를 생성합니다. PreparedStatement는 쿼리의 재사용과 SQL 인젝션 방지를 위해 더 권장됩니다.
SQL 쿼리 작성: 생성한 Statement 또는 PreparedStatement 객체에 SQL 쿼리를 작성합니다. 필요에 따라 쿼리 안에 매개변수를 사용할 수 있습니다.
매개변수 설정 (선택 사항): PreparedStatement를 사용하는 경우, setXXX() 메서드를 사용하여 매개변수 값을 설정합니다. XXX는 데이터 타입을 나타내며, 예를 들어 setInt(), setString() 등이 있습니다.
쿼리 실행: 생성한 Statement 또는 PreparedStatement 객체의 executeQuery() (SELECT 쿼리 실행) 또는 executeUpdate() (INSERT, UPDATE, DELETE 쿼리 실행) 메서드를 호출하여 쿼리를 실행합니다.
결과 처리 (선택 사항): 만약 SELECT 쿼리를 실행했다면, ResultSet 객체를 사용하여 결과를 처리합니다. ResultSet에서 데이터를 읽어와서 원하는 작업을 수행합니다.
연결 닫기: 모든 작업이 끝났으면, 생성한 Statement, PreparedStatement, ResultSet, 그리고 Connection을 닫아 리소스를 반환합니다. 리소스 누수를 방지하기 위해 반드시 닫아주어야 합니다.