CLI에서 DB를 사용하는 절차
로그인 => 쿼리작성 => 결과반환
JDBC도 위 절차들을 추상화, 캡술화하여 제공한다
connection => statement => resultSet
ResultSet executeQuery(String query)
select 쿼리를 보낼때 사용하며 CLI에서 쿼리를 보내면 해당 쿼리에 대한 결과가 출력되것처럼 결과를 ResultSet에 담아서 반환한다.
int executeUpdate(String ddl)
update, insert, delete등의 dml create, alter등의 ddl 쿼리를 보낼때 사용하며 해당 쿼리가 반영된 레코드들의 갯수를 반환한다.
no, id, pwd를 입력받아 DB에 insert하는 과정
stmt = con.createStatement(); //JDBC Driver를 통해 stmt 생성
String query = "insert into number1 values('" + no + "','" +id + "', '"+pwd+"')"; //직접 쿼리를 작성
stmt.executeUpdate(query); // DB에 쿼리 전달
Statment는 위 과정을 통해 DB에 쿼리를 전달한다
PreparedStatement pstmt = con.prepareStatement("insert into number1 values(?,?,?)");
pstmt.setInt(1, 1);
pstmt.setString(2, "id");
pstmt.setString(3, "pwd");
pstmt.executeUpdate();
DB가 쿼리를 처리하는 방식은 아래와 같다.
1. parsing
쿼리를 parsing하여 문법에 대한 오류를 찾는다.
optimizer
여러 수행 경로를 비교하여 가장 효율적인 실행 방식을 찾는다.
compile
DB가 인식할수있는 byte code로 변환한다
excute
byte code를 읽고 실행한다.
statment는 위 과정을 모두 거치는 반면 prepareStatement는 인스턴스 생성과 동시에 특정값만 제외한 쿼리를 db에 전송하여 위 과정중 parsing의 과정을 생략한다.
또한 쿼리문 안에 직접 파라미터를 입력하는 statement와는 달리 setInt(), setString()등을 제공하여 보다 편하게 쿼리를 작성 가능하게 해준다.
Q1. Class.forName("oracle.jdbc.driver.OracleDriver");
A. Class.forName()은 객체를 생성하는것이 아닌 ClassLoader를 통해 해당 클래스를 JVM에 탑재 시키는 역할을 한다. new() 키워드를 통해 인스턴스화 하지 않더라고 JVM에는 OracleDriver의 기능이 로드되어있기때문에 OracleDriver 기능을 사용 할 수 있다.
Q2. Path, ClassPath 차이
A. Path는 os에게 특정 app의 위치를 알려주는 역할을 수행하며, ClassPath는 jdk에게 class들에 대한 위치정보를 알려주는 역할을 수행한다.
Q3. jar, war
A. jar는 class파일의 모아둔것이며 war는 class파일 이외에 ServletContainer에 탑재하여 사용할수 있도록 jsp, servlet, html등 웹 관련 파일들을 모아둔것이다.
Q4. innerclass, anonymouse class
A. class안의 class가 존재하는 innerClass, method 내부에 class가 존재하는 innerMemberClass, class 생성과 동시에 사용 가능한 anonymouse class가 존재한다
Q5. throw
A. java에 Exception은 Runtime Exception과 이를 제외한 나머지 Exception들이 존재한다.
Runtime Exception은 실행중 개발자의 코드상 오류로 인해 발생할 수 있는 Exception들이며 따로 throws나 try-catch를 통해 처리해주지 않아도 되며 unchecked exception이라 한다. 나머지 Exception들은 명시적으로 throw나 try-catch로 예외를 처리해주어야 하며 checked exception이라 한다.
Q6. Java properties class
A. 프로그램 관련 설정 정보들은 properties라는 파일안에 관리한다. java의 properties class는 이러한 설정 정보들을 저장하거나 조회할때 사용한다.
이런 유용한 정보를 나눠주셔서 감사합니다.