Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발공부 일지

DB Oracle SQL 추석 연휴 복습 [Sequence , dual, Transaction] 본문

학원수업/Java 기초 개념

DB Oracle SQL 추석 연휴 복습 [Sequence , dual, Transaction]

짜몽- 2022. 9. 12. 23:51

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