쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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 |