반응형
1. 정적영역(Static Block) & 클래즈(Class객체)
- 클래스가 메모리에 저장된 후 자동 실행될 명령을 작성하는 영역
- 정적영역에 작성된 명령은 프로그램에서 한번만 실행
2. 오라클 드라이버가 쓰는 가장 대표적인 객체 생성 방법
- 수동으로 클래스 객체 생성
- 정적영역에 객체생성 + 메소드 호출이 함께 작성되어있음
3. Class 객체(Clazz)를 수동으로 제공받는 방법
Class.forName(String className) 메소드 호출하기
- 클래스를 메모리에 저장하고 Class 객체를 반환해줌
- Class.forName(String className) : 문자열로 표현된 패키지가 포함된 클래스를 전달받아 ClassLoader 프로그램을 사용하여 해당 위치의 클래스를 읽어 메모리에 저장한 후 Class 객체를 반환하는 메소드
Object.getClass() 메소드 호출하기
- 현재 사용하는 클래스에 대한 Class 객체를 반환해줌
클래스명.class 형식으로 표현하기
4. StaticBlock.java
package xyz.itwill.jdbc;
public class StaticBlock {
//정적영역
static {
System.out.println("### StaticBlock 클래스의 정적영역에 작성된 명령 실행 ###");
StaticBlock sb=new StaticBlock();
sb.display();
}
//기본생성자
public StaticBlock() {
System.out.println("### StaticBlock 클래스의 기본 생성자 호출 - 객체 생성 ###");
}
//메소드
public void display() {
System.out.println("### StaticBlock 클래스의 display() 메소드 호출 ###");
}
}
5. [실행 프로그램] StaticBlockApp.java
package xyz.itwill.jdbc;
//JVM이 main메소드를 호출하며 프로그램 실행
public class StaticBlockApp {
public static void main(String[] args) throws ClassNotFoundException {
//방법1. JVM - 자동으로 클래스 객체 생성
/*
//1-1.
//JVM이 ClassLoader 프로그램을 실행시켜 클래스(Class 파일)를 읽어들임
//읽어들인 클래스를 메모리(Method 영역)에 저장 - 자동 작업됨, 딱 1번만 실행함
StaticBlock sb;
//1-2.
//new 연산자가 메모리에 저장된 클래스(Class 객체 - Clazz)의 생성자(Constructor)를 호출해
//객체(Object - Instance)를 생성함 - (Heap 영역)에 자동으로 객체 생성
//1-3.
//생성된 객체의 메모리 주소(HashCode)를 전달받아 Stack 영역에 참조변수를 생성하여 저장
sb=new StaticBlock();
//객체를 수십개 만들어도 메모리에는 클래스가 딱 한번만 저장됨!!!
//StaticBlock sb=new StaticBlock();
//StaticBlock sb=new StaticBlock();
//StaticBlock sb=new StaticBlock();
//1-4.
//참조변수에 저장된 메모리 주소로 객체를 참조하여 메소드 호출 - 기능 구현
sb.display();
*/
//방법2. 프로그래머 - 수동으로 클래스 객체 생성
//2-1.
//Class.forName(String className) 메소드 호출
//2-2.
//호출 시 ClassNotFoundException 발생함 - 일반 예외이므로 반드시 예외처리해야만 에러 미발생
Class.forName("xyz.itwill.jdbc.StaticBlock");
//2-3.
/*
StaticBlock sb=new StaticBlock(); //객체를 만들어서
sb.display(); //메소드를 호출해야 하지만
//굳이 객체를 만들필요없음
//=> 왜?
//=> static 영역에서 이미 객체생성과 메소드 호출이 일어남
//=> 오라클 드라이버가 쓰는 가장 대표적인 객체 생성 방법임
*/
}
}
반응형
'jdbc' 카테고리의 다른 글
[jdbc] 6. 학생관리 프로그램 (0) | 2024.05.14 |
---|---|
[jdbc] 5. DBCP 프로그램 (0) | 2024.05.14 |
[jdbc] 4. JDBC 프로그램의 활용 (0) | 2024.05.13 |
[jdbc] 3. CRUD기능을 구현하는 JDBC 프로그램 작성법 (0) | 2024.05.13 |
[jdbc] 1. JDBC 프로그램 작성을 위한 환경설정 (0) | 2024.05.12 |