코딩 기록들
[Database Programming] 11. 데이터베이스 구성 실습 - 자바와 오라클 연결하기 본문
왓챠 사용자계정 만들기
1st. 시스템계정 -> 새 sql편집기 만들기
사용자아이디를 WATCHA로 전부 바꾸기 (CTRL + C + F)
OracleX21WATCH PASSWORD : WATCHA로 설정
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER WATCHA IDENTIFIED BY WATCHA; --계정과 DB 함께 만들어줌
ALTER USER WATCHA DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
ALTER USER WATCHA TEMPORARY TABLESPACE temp;
GRANT CREATE SESSION, CREATE VIEW, ALTER SESSION, CREATE SEQUENCE TO WATCHA;
GRANT CREATE SYNONYM, CREATE DATABASE LINK, RESOURCE, UNLIMITED TABLESPACE TO WATCHA;
-> 위 코드 한줄씩 실행
2nd. WATCHA 계정에서 새 sql편집기 만들어서 편집기로 추출했던 코드 붙여넣고 실행(스키마 연결후 테이블 생성)
자바와 오라클 연결
자바에서 '감독'을 추가하는 방법
1. 이클립스에서 'watcha' 프로젝트 생성
2. jar 경로설정 : 프로젝트 우클릭 > Build path > congifure build path > libraries > classpath > Add External JARs
> 다운받았었던 ojdbc11.jar 선택
3. 패키지 만들어주고, 아래 3개의 코드 추가
아래 이미지와 같이 패키지 구성하기
패키지의 역할
- vo 패키지 : 데이터클래스만 들어감 value object = 데이터만 가지고있는 객체
- dao 패키지 : 여기에 들어가는 클래스만 데이터베이스와 통신을 함(=데이터에 접근하는 객체 data access object)
- service 패키지 : 트랜잭션을 담당
- util
디비거에서 시퀀스 만들어주기
WATCHA > Sequences > 우클릭 create new sequence 해서 새 시퀀스 만들기
- Sequence Name : SEQ_MOVIES_PK
- Value : 시퀀스가 가질 값 : 보통 1을 줌
- Min Value : 번호표가 몇번부터 시작할것인가
- Max Value : 999999 (사전에 설정을 000001로 해뒀으므로)
- Increment : 번호표 하나씩 발급할떄마다 번호표의 값이 얼마나 증가할것인가
- Cache : 24 작성. = 일단 번호표 24개를 미리 뽑아놓는것 -> 다 소진되면 다시 번호표 24개 뽑아서 줌 -> 반복
- cycle : 체크하면 1~999999 다 돌고나면 다시 1을 준다는것 ( pk를 숫자로만 관리를 한다면, 이값이 증가되어 999999가 됐을때 다음번호는 1번이 되므로, 처음의 1번값과 중복이 됨 -> 이 중복을 방지하기위해 실무에서는 이 번호 앞에 날짜(+시간)를 붙임! )
> save > persist
WATCHA 에서 새 sql 편집기 생성 후 작업
번호표(시퀀스) 발급해보기
-- 실행 시킨 만큼 번호표(시퀀스) 발급됨
SELECT SEQ_MOVIES_PK.NEXTVAL --NEXTVAL : 번호표를 발급하라는 키워드 (다음번호)
FROM DUAL
;
--현재의 번호표가 몇번인지 알고싶을때
SELECT SEQ_MOVIES_PK.CURRVAL -- CURVAL : 현재까지발급된 가장큰 번호
FROM DUAL
;
패키지의 역할
1. vo 패키지
- 데이터클래스만 들어감 value object = 데이터만 가지고있는 객체
- database의 directors테이블과 1:1로 매핑되는 클래스
2. dao 패키지
- 여기에 들어가는 클래스만 데이터베이스와 통신을 함(=데이터에 접근하는 객체 data access object)
- data access object
- directorsDao.java : java에서 Database를 연동하기 위한 클래스
- dao 클래스만 database와 연동된다 (-> 쿼리가 필요한경우 dao와 무조건 연결)
3. service 패키지
- DirectorService.java : dao가 처리하는 쿼리의 트랜잭션(커밋, 롤백)을 처리하는 클래스
- 업무(처리)흐름과 관계 -> 코드를 업무의 흐름대로 작성함
4. directors handler.java
- 사용자가 특정 기능을 호출
- 항상 service를 멤버변수로 가짐
- directorsDao를
- ex) 감독을 신규로 추가해 달라 / 감독이 제작한 영화의 목록을 조회해 달라등의 기능 호출
-> directorsService.java를 통해서 호출하게 됨
5. database
6. util
진행 순서)
7) 1) DirectorsHandler.java (바로아래있는 파일 호출 가능) handler : 서비스호출
________|_________
| |
6) 2) DirectorsService.java ActorsService.java (service: 바로아래의 dao 트랜잭션 관리)
________|_________
| |
5) 3) DirectorsDao.java ActorsDao.java
(Dao가 처리하는 insert, update, delede는 Service가 직접 실행시킨다)
|
4) DB