전체 글 259

[JDBC] MVC - Properties

Properties : key와 value를 String 타입으로 담는 Map 계열의 컬렉션이다. 주로 외부 설정 파일을 읽어오거나 파일 형태로 출력할 때 사용한다. - Properties를 사용하는 이유 : 기존 방식은 SQL문을 수정하려면, Java 내에 작성된 코드를 변경해야 하므로, 사용자가 프로그램을 실행하는 와중에 프로그램 실행을 중단시켜야 하는 불편함이 있다. 그러나 Properties를 이용해 외부에서 파일을 읽어오는 형태로 바꾸면 프로그램 실행을 중단시킬 필요 없이 외부 파일에서 SQL문을 변경시키면 그 즉시 프로그램에 적용되어 유지보수에 편리해진다. Run public class Run { public static void main(String[] args) { // 1. 폴더 생성하기..

[JDBC] MVC - Template, Service

MVC ① [Run 클래스] 실행시키기 위해 View를 호출한다. ② [View 클래스] 사용자가 Scanner로 전달값을 입력하면서 Controller를 호출한다. ③ [Controller 클래스] View에서 전달받은 값을 가공 처리한 후 Service로 전달 및 호출한다. ④ [Service 클래스] Connection을 생성하여 DB에 접속하고, Connection 객체와 Controller에서 전달받은 데이터를 Dao에 전달한다. ⑤ [Dao 클래스] SQL문을 실행해서 DB에 직접 접근하고, ResultSet이나 int형 변수로 결과를 받아 Service로 리턴한다. ⑥ [Service 클래스] Dao로부터 결과를 받아 트랜잭션 처리한 후 결과를 Controller로 리턴한다. ⑦ [Contr..

[JDBC] MVC - PreparedStatement

PreparedStatement : SQL문을 바로 실행하지 않고 잠시 보관한다. - 미완성된 SQL문을 먼저 전달하고, 실행하기 전에 완성 형태로 만든 후 실행한다. - 미완성된 SQL문 만들기 → 사용자가 입력한 값들이 들어갈 수 있는 공간을 위치홀더 '?'로 확보한다. → 각 위치홀더에 맞는 값을 세팅한다. - Statement의 자식 객체이다. - Statement와의 차이점 ① Statement는 완성된 SQL문을 작성하는 반면, PreparedStatement는 미완성된 SQL문에 위치홀더 '?'를 사용하여 작성한다. ② Statement로 작성 시: 'stmt = conn.createStatement();' PreparedStatement로 작성 시: 'pstmt = conn.prepared..

[JDBC] MVC - Statement

MVC 흐름 ① [Run 클래스] 실행하여 View 클래스 호출 ② [View 클래스] 사용자가 전달값을 입력(Scanner)한 후 Controller 클래스 호출 ③ [Controller 클래스] 사용자의 요청을 전달받은 후 데이터를 가공 처리하여 Dao에 전달 및 호출 ④ [Dao 클래스] ⓐ Connection을 생성하여 DB에 접속 ⓑ SQL 구문 실행 ⓒ 해당하는 결과 받기 - SELECT문의 경우: ResultSet으로 - DML문의 경우: int형 타입으로 ⓓ DML문일 경우엔 트랜잭션 처리(commit(); / rollback();) ⓔ 결과를 Controller 클래스로 리턴 ⑤ [Controller 클래스] Dao 클래스로부터 반환받은 결과에 따라 View(성공 또는 실패 화면) 결정 ..

[JDBC] 개요 - 사용 객체, 처리 절차

JDBC(Java Database Connectivity) : Java에서 데이터베이스에 접근할 수 있게 해주는 Programming API이다. - java.sql 패키지를 사용한다. JDBC 사용 객체 (1) DriverManager : 데이터 원본에 JDBC Driver를 통하여 Connection을 만드는 객체이다. ① Class.forName()을 통해 생성되며 반드시 예외 처리를 해야 한다. ② DriverManager 클래스의 getConnection()을 사용하여 객체를 생성한다. 이때, Connection 객체 생성 시에 직접 객체 생성이 불가능하다. (2) Connection : 데이터베이스의 연결 정보를 담고 있는 객체이다. (IP주소, PORT번호, 계정명, 비밀번호) ① State..

[JDBC] Java와 Oracle SQL Developer 연동하기

Oracle SQL Developer를 Eclipse와 연동하기 ① ojdbc6.jar를 다운받아 해당 파일을 사용할 java workspace로 옮겨준다. ☞ https://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html ② Eclipse를 열고 상단 메뉴바에서 Project - Properties - Java Build Path - Libraries - Add External JARs - ojdbc6.jar ③ Package Explorer에서 Referenced Libraries에 ojdbc6.jar이 생성돼있어야 한다. ④ 문자 인코딩 방식을 UTF-8로 일치시켜야 한다. Window - Preferenc..

[SQL]OBJECT(SEQUENCE)

SEQUENCE : 번호를 순차적으로 발생시켜주는 객체이다. - ex) 회원 번호, 사원 번호, 게시글 번호 → 순차적으로 겹치지 않는 숫자로 정의할 때 사용한다. (1) SEQUENCE 객체 생성 구문 ① CREATE SEQUENCE 시퀀스명 ② START WITH 시작숫자 (생략 가능) : 처음 발생시킬 시작값을 설정한다. ③ INCREMENT BY 증가값 (생략 가능) : 시퀀스를 증가시킬 때마다 몇 씩 증가시킬 것인지 설정한다. ④ MAXVALUE 최댓값 (생략 가능) : 최댓값을 지정한다. ⑤ MINVALUE 최솟값 (생략 가능) : 최솟값을 지정한다. ⑥ CYCLE / NOCYCLE (생략 가능) : 값의 순환 여부를 결정한다. ⑦ CACHE 바이트 크기 / NOCACHE (생략 가능) : 캐..

Database/Oracle 2022.03.31

[SQL]OBJECT(VIEW)

OBJECT : 데이터베이스를 이루는 논리적 구조물들 - OBJECT의 종류에는 TABLE과 USER, VIEW, SEQUENCE, PACKAGE, TRIGGER, FUNCTION, PROCEDURE가 있다. VIEW : SELECT를 저장해놓을 수 있는 객체 (1) 장점 : 자주 사용할 SELECT문을 VIEW에 담아놓고 사용하면 매번 SELECT문을 작성할 필요가 없어진다. → 조회용 임시테이블(실제로 값이 담겨있는 것이 아니다.) (2) 생성 방법 ⓐ CREATE VIEW 뷰명 AS 서브쿼리; ⓑ CREATE OR REPLACE VIEW 뷰명 AS 서브쿼리; - 뷰 생성 시 기존에 중복된 이름의 뷰가 없으면 새로 생성하고, 있으면 해당 뷰에 덮어쓰기를 한다. - OR REPLACE 옵션은 생략할 수..

Database/Oracle 2022.03.31

[SQL]TCL - COMMIT, ROLLBACK, SAVEPOINT

TCL(TRANSACTION CONTROL LANGUAGE) : 트랜잭션을 제어하는 언어이다. (1) 트랜잭션(TRANSACTION) ① 데이터베이스의 논리적 작업 단위이다. ② 데이터의 변경사항(DML) 등을 하나의 트랜잭션으로 묶어서 처리한다. → 확정(COMMIT)하기 전까지의 변경사항들을 하나의 트랜잭션으로 담는다. ③ 트랜잭션의 대상이 되는 SQL : INSERT, UPDATE, DELETE (2) 트랜잭션의 종류 ① COMMIT; : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영한 후 트랜잭션은 비워진다.(확정) ② ROLLBACK; : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영하지 않고 다 삭제한 후 마지막 COMMIT 시점으로 돌아간다. ③ SAVEPOINT 포인트..

Database/Oracle 2022.03.30

[SQL]DCL - GRANT, REVOKE

DCL(DATA CONTROL LANGUAGE) : 데이터 제어 언어로써 계정에게 시스템 권한 또는 객체 접근 권한을 부여(GRANT)하거나 회수(REVOKE)한다. (1) GRANT(권한 부여) ① 시스템 권한: 특정 DB에 접근하는 권한이며, 객체들을 생성할 수 있는 권한이다. ⓐ GRANT 권한1, 권한2, ... TO 계정명; ⓑ 종류 - CREATE SESSION: 계정에 접속할 수 있는 권한 GRANT CREATE SESSION TO SAMPLE; - CREATE TABLE: 테이블을 생성할 수 있는 권한 GRANT CREATE TABLE TO SAMPLE; - CREATE VIEW: 뷰를 생성할 수 있는 권한 GRANT CREATE VIEW TO SAMPLE; - CREATE SEQUENCE..

Database/Oracle 2022.03.29