성장 일기/쌍용교육센터 / / 2023. 2. 2. 13:44

0202/Statement

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyoungjdbc에 올려두었습니다.

 

조회 결과가 여러 행일 때( 몇 개의 행이 반환될 지 모를 때 )

* 부서 번호를 받아 사원명 조회하는 일 메서드 작성

public List<String> selectJob( int deptno ){

}
//단일형으로 몇 개인지 모른 값을 묶어서 반환

* 매니저 번호를 받아 사원 번호 조회하는 일 메서드 작성

public Set<Integer> selectJob( int mgr ){

}
//단일형으로 몇 개인지 모른 값을 묶어서 반환( 값이 유일 )

* 부서 번호를 받아 사원 번호, 사원명 조회하는 일 메서드 작성

public List<VO> selectJob( int deptno ){

}
// 복합 값으로 몇 개인지 모른 값을 묶어서 반환

* 사원 번호를 받아 사원명, 부서 번호, 매니저 번호, 입사 일, 조회하는 일 method 작성

 public VO selectJob( int empno ){

}

* 사원 번호를 받아 사원명 조회하는 일 메서드 작성

public String selectJob( int empno ){

}

 

* 사원번호를 받아 부서번호 조회하는 일 메서드 작성

public int selectJob( int empno ){

}

 

 

PreparedStatement

  - 쿼리문을 알고 있는 객체

  - 쿼리문을 미리 생성하고, 값이 들어가는 부분을 bind변수(?)로 처리하여

    쿼리문의 복잡도를 낮추는 쿼리문 생성객체.

  - 쿼리문이 반복 실행되더라도 한번만 생성하여 처리하기 때문에 반복 실행되는

    환경에서 효율이 좋다.

  - SQLInjection 공격에 안전하다.

 

* 작업 순서

  1. 드라이버 로딩

  2. 커넥션 얻기

  3. 쿼리문 생성 객체 얻기

  4. 바인드 변수에 값 설정

  5. 쿼리문 수행 후 결과 얻기

  6. 연결 끊기

 

* bind변수 ( ? )

  - 쿼리문과 값을 묶을 때 사용하는 변수.

  - 쿼리문에 ( ? )로 사용한다.

  - 바인드 변수는 L -> R 진행하며 순서대로 1번의 인덱스를 가진다.

  - 컬럼명, 테이블명은 절대로 바인드 변수를 사용할 수 없다.

  - 바인드 변수에는 문자열일지라도 ‘를 붙이지 않는다.

 

* 코드 예

// 쿼리문 생성객체 얻기
String insert=“insert into 테이블명(컬럼명,,) values(?,?,?,?)”;// 쿼리문 생성

PreparedStatement pstmt=con.prepareStatement( insert );

// bind 변수에 값 설정 ( 쿼리문에 바인드변수가 없다면 생략 )

//정수
pstmt.setInt( 인덱스, 정수값 );
// 실수
pstmt.setDouble(인덱스, 실수값);
// 문자열
pstmt.setString( 인덱스, 문자열 값); 
// 날짜
pstmt.setDate( 인덱스, java.sqlDate객체);

// 쿼리문 수행 후 결과 얻기
// ( 주의 : 매개변수를 넣지 않도록 => 실행할 때 error )

pstmt.executeUpdate();// insert, update, delete

pstmt.executeQuery(); // select

// 연결끊기
pstmt.close();
con.close();

 

 

Singleton Pattern

  - 실행중인 JVM에서 하나의 객체를 만들어두고, 하나의 객체를 유지하며,

    하나의 객체만 사용하도록 만드는 Design Pattern

  - 객체를 사용할 때 생성되어있는 객체를 사용하므로 객체를 참조하는 시간이 짧다.( 빠르다 )

  - 메모리를 절약할 수 있다.

  - JVM에서 객체가 소멸된 이후에는 참조할 수 없다.( 해결하는 코드 작성 )

// 클래스외부에서 직접 객체화할 수 없도록 막는다. 
// ( 생성자의 접근 지정자를 private )
public class Test{

	private static Test t;

	private Test(){

	}
}

// 객체를 하나로 유지하고, 생성된 객체를 반환하는 일.
public static Test getInstance(){

	if(  t == null ){ // 객체가 생성되어있지 않다면
	t = new Test();
	}
    
return t;
}

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0206/ResultSetMetaData, CLOB  (0) 2023.02.08
0203/PreparedStatement  (0) 2023.02.08
0201/인덱스, JDBC  (0) 2023.02.01
0131/계정 권한, 백업 및 복원, view  (0) 2023.01.31
0130/시퀀스, 조인, 정규화  (0) 2023.01.30
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유