개발공부 일지
DB Oracle SQL 추석 연휴 복습 [Sequence , dual, Transaction] 본문
select 는 executeQuery()
insert , delete, update 는 executeUpdate()
DAO : Data Access Object 데이터베이스 연동 로직을 정의한 객체
VO : Value Object
Connection SQL 정의 PreparedStatment executeQuery() ResultSet if
throws SQLException
execute 메서드
execute(); boolean
쿼리를 실행한 뒤, 리턴되는 결과가 ResultSet 객체면 true, int형 정수, 결과값이 없으면 false
- execute(); 메서드를 사용하면 결과값이 ResultSet형태일 때 true를 리턴해줍니다.
executeUpdate();
int type 리턴
쿼리를 실행한 뒤, 적용된 행의 개수를 리턴
- executeUpdate(); 메서드는 쿼리를 실행했을 때, 적용된 행의 개수를 돌려준다
executeQuery();
ResultSet 클래스 리턴
쿼리를 실행한 뒤, 조회된 결과를 ResultSet에 담아 테이블 형태로 리턴
executeQuery(); 메서드는 쿼리 실행과 동시에 ResultSet 클래스로 되돌려준다.
!!!!!!!!!!!!!!!!MAIN 메서드만 보고 memberVo를 바로 쓸수있게끔 연습해야함!!!!!!!!!!!!!!
* 오라클 시퀀스 (Oracle Sequence) *
순차적으로 증가, 유일한 값을 생성하기 위한 객체
주로 primary key ( unique + not null ) 을 생성하기 위해 사용
시퀀스(Sequence)란?
- - 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.
- - 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.
- - 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.
- - 메모리에 Cache되었을 때 SEQUENCE 값의 액세스 효율이 증가 한다.
- - SEQUENCE는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 SEQUENCE를 여러 테이블에서 쓸 수 있다.
// Hash라는 메모리를갖고있음
hash (일시적 메모리영역)
CREATE SEQUENCE 시퀀스명
[START WITH 시작번호]
[INCREMENT BY 증가값]
[MAXVALUE 최대값]
[MINVALUE 최소값]
[ CYCLE or NOCYCLE ]
[ NOCACHE ]
* Oracle dual table *
: 오라클에서 제공하는 기본 테이블
컬럼 하나만 존재, 주로 시퀀스 또는 날짜함수, 산술연산에 사용
sys adimin 계정에서 관리 하고 수정 및 삭제 등 조작 불가
ex ) 실제 table을 이용
select * from dual;
-- 산술 연산시 dual 사용
select 2*5 from dual;
-- 현재시간 sysdate
select sysdate from dual;
-- 시퀀스 생성
create sequence test_seq;
-- nextval 을 이용해 시퀀스 값을 발급, dual table을 이용
select test_seq.nextval from dual;
-- 시퀀스 삭제
drop sequence test_seq;
-- 시퀀스틀 생성 ( start with 옵션을 이용 )
create sequence test_seq start with 7;
-- dual table을 이용, sequence test_seq의 nextval 을 확인
select test_seq.nextval from dual;
-- 실제 table을 이용
create table car(
car_no number primary key,
model varchar2(100) not null
)
-- car_no primary key 의 정보를 sequence를 이용해 발급하도록 한다
create sequence car_seq;
-- 자동차 정보를 생성 insert 한다
insert into car(car_no,model) values(car_seq.nextval,'소나타');
insert into car(car_no,model) values(car_seq.nextval,'sm6');
insert into car(car_no,model) values(car_seq.nextval,'k5');
select * from car;
* 트랜잭션 ( Transaction )
- 작업단위
더 이상 쪼갤 수 없는 작업단위 -> 원자성
TCL (Transaction Control Language)
- COMMIT : 변경된 작업 내용을 실제 데이터베이스에 반영
- ROLLBACK : 변경된 작업 내용을 취소하고 이전 상태로 되돌림
사례 ) 카드를 발급하면 포인트 지급을 약속
카드발급 트랜잭션 => 1.카드발급 + 2.포인트 발급
1번 2번 두 사항이 모두 정상적으로 수행되었을 때 실제 db에 작업 내용이 저장되어야 한다
만약 1번 2번의 세부 작업에 문제가 발생할 경우에는, 예를 들면 카드는 발급되고 포인트 지급시
문제가 발생될 경우에는 작업 내용을 취소하고 원 상태로 되돌려야 한다 => rollback
'학원수업 > Java 기초 개념' 카테고리의 다른 글
| StringBuilder (0) | 2022.11.14 |
|---|---|
| 잘 모르는 개념 모아 쓰기3 (0) | 2022.08.29 |