2020. 5. 13. 13:21ㆍDB
1) ResultSet 의 next()
- 다음 데이터가 있으면 그 데이터를 가리키는 곳으로 이동하고 true를 리턴
다음 데이터가 없음us false를 리턴
여러 행의 데이터라면 반복문을 이용해 각 행에 접근하는 것이 가능
while(ResultSet.next())
2) ResultSet 의 get메소드
- 열의 값을 가져올 때 사용하는 메소드
get자료형(열이름이나 select 구문의 열 인덱스)로 사용
- getInt, getDouble, getString, getDate 형태로 만들어져 있음
- 모든 열의 값은 getString으로 가져오는것이 가능
getInt("deptno"): deptno열의 값을 정수로 리턴
getInt(1): 첫번째 열의 값을 정수로 리턴
getString("dname"): dname 열의 값을 문자열로 리턴
Transaction
- 한 번에 처리되어야 하는 작업의 단위
1) 구현 방식
auto-commit: sql문장이 성공적으로 수행되면 자동으로 commit
manual-commit: commit이나 rollback을 명시적으로 호출해야만 commit되거나 rollback 되는 방식
2) java에서의 활용
- 기본적으로 autocommit인데 manualcommit으로 변경하고자 하는 경우에는
Connection.setAutoCommit(false); 호출
- commit이나 rollback을 하고자 하는 경우에는 Connection.commit() 또는 rollback을 호출
- rollback은 작업을 취소하는 명령인데 대부분의 경우는 하나의 거래를 수행하는 도중 예외가 발생하면
rollback을 시킴
- 작업이 정상적으로 완료되면 commit을 호출해서 원본에 작업 내용을 반영함.
Java에서 프로시저 사용
- PreparedStatement대신 CallableStatement 생성
CallableStatement 실행객체변수 = Connection.prepareCall("{call 프로시저이름(?...)}");
실행객체변수.set자료형(물음표 번호, 실제 데이터)...
-> 실행은 executeUpdate()또는 executeQuery()
데이터베이스 연동 패턴
1. DTO(Data Transfer Object - Variable Object, Domain) 패턴
- 여러 개의 속성을 묶어서 하나로 표현하기 위한 클래스를 DTO 또는 VO라고 함.
- 테이블과 매핑되는 클래스를 만들어서 사용하는 패턴 - 이 패턴의 확장이 ORM: SQL없이
인스턴스만으로 데이터베이스 작업을 수행하도록 해주는 프레임워크
2. DAO(Data Access Object)
- 데이터베이스 작업만 수행하는 별도의 클래스를 만들어서 사용하는 패턴
- 이 패턴을 서버에 적용할 때는 특별한 경우가 아니면 singleton pattern으로 디자인
3. Singleton
- 객체를 하나만 만들 수 있도록 클래스를 디자인하는 패턴
4. Service: 사용자의 요구(Business Logic)를 처리하는 클래스
5. Controller: 사용자의 요청을 받아서 필요한 service를 호출하는 클래스
6. View: 클라이언트가 보고 있는 화면
DTO & DAO패턴을 이용한 CRUD패턴(Create Read Update Delete)
1. 작업에 필요한 샘플 데이터 생성
1) 샘플 테이블을 생성
- 상품 테이블
상품 코드: 영문과 숫자로 이루어진 문자열 10자리 - 자주 변함, primary key
상품 이름: 한글 포함한 20자리 문자열 - 변하지 않음, 필수
상품 원산지: 한글 포함한 50자리 문자열 - 변하지 않음, 필수
상품 가격: 정수 10자리 이내 - 기본값 0
상품 입고일: 날짜 - 기본값 오늘 날짜
3. DAO 클래스를 생성 - 데이터베이스 작업만을 담당하는 클래스
- GoodDAO 클래스
- 서버에서 사용할 것이라면 Singleton 패턴으로 작성