자바 파일(Java file), 클래스 파일(Class file)자바 파일은 확장자가 .java 인 파일로서 자바 언어로 소스 코드를 작성하는 파일입니다.그리고 이 자바 파일을 자바 컴파일러로 컴파일한 파일이바로 .class 확장자를 가진 클래스 파일입니다.우리가 흔히 이클립스와 같은 IDE 혹은 커맨드 라인에서javac 명령어를 통해 컴파일했을 때 나오는 파일이죠.이 클래스 파일을 가지고 자바의 클래스 로더(Class Loader)가JVM으로 클래스 파일을 로딩합니다.Java에서 클래스의 로딩 과정은 클래스 로더(Class Loader)가 확장자가.class 클래스 파일의 위치를 찾아그것을 JVM위에 올려놓는 과정을 뜻합니다. 동적 로딩JVM이 클래스파일을 로드할 때 기본적으로 동적으로 로드합니다...
3.1. 에러가 발생하는 경우
1. 포트번호 불일치
2. DB명 불일치
3. username 불일치
4. password 불일치
5. password 누락
4. Gradle 한글 설정
❗
한글 깨짐 문제 해결
정확한 이해는 나중에~
5. 조회 실습
import java.sql.*;
publicclassStoreApp {
publicstaticvoidmain(String[] args) {
// 1. DB 연결 - 세션 만들어짐Connectionconn= DBConnection.getConnection();
// BWtry {
// 2. 버퍼// sql문에 ';' 필요XStringsql="select id, name, price, qty from store_tb where id = ?"; // ? = 준비되지 않은 sql문장 = 그래서 prepareStatement// 프로토콜이 적용된 버퍼 -> 클래스명이 중요하지 않다..?PreparedStatementpsmt= conn.prepareStatement(sql); // 괄호 안에 query를 담는다 = 버퍼에 쓰는 것과 같다
psmt.setInt(1, 2); // ?의 위치(?가 여러개일수도 있으니까) - 0(X) 1(O)부터 시작// 이제 전송해야됨 (flush)// 3. flush (rs = table 조회 결과 즉 view)ResultSetrs= psmt.executeQuery(); //read - select / DQL 전용 함수 / 쿼리의 결과(뷰)를 return// 뷰를 클래스 오브젝트로 담아서// executeUpdate : write - insert update delete / DML 전용 함수booleanisThere= rs.next(); // cursor 한 칸 내리기 - 직접 해야됨 / 행이 있으면 true
System.out.println("isThere: " + isThere); // 로그 찍는 연습if (isThere){
// 프로젝션이 시작됨// java에서도 프로젝션// 버퍼로 받을 때는 문자열이니까 모두 string으로 받아도 됨intid= rs.getInt("id"); // '프로젝션 해서, String -> int로 캐스팅'까지 해줌Stringname= rs.getString("name");
intprice= rs.getInt("price");
intqty= rs.getInt("qty");
System.out.println(id + " " + name + " " + price + " " + qty);
}
} catch (SQLException e) { // 백그라운드프로세스가 메타데이터를 보고 에러 판단..?thrownewRuntimeException(e);
}
}
}
5.1. 에러가 발생하는 경우
1. store_tb에 들어있는 데이터의 행을 초과
원래는 아무것도 출력되지 않지만 System.out.println("isThere: " + isThere); 를 통해 로그로 확인
⇒ rs.next() 의 cursor가 아무것도 가리키고 있지 않기 때문에 false가 리턴되었음을 알 수 있다.