최근 업무에서 사용하는 Oracle
기반으로 작성되었습니다.
즉, DB 단에서 특정 비즈니스 로직을 미리 지정해
호출을 통해 언제든 재사용할 수 있는 비즈니스 로직 단위
IF
에 따른 조건 분기 가능EXCEPTION
에 따른 예외 처리 가능CREATE OR REPLACE PROCEDURE 프로시저명(파라미터명 타입)
IS
-- 선언부
BEGIN
-- 로직 실행
EXCEPTION
-- 예외 처리
END 프로시저명;
IN
매개변수READ ONLY
로, 프로시저 내부에서 값 변경 불가능DEFAULT
이므로 생략가능OUT
매개변수OUT
매개변수를 통해 호출자에게 데이터를 전달 가능WAS
를 구성하는 프로그래밍 언어에 의존하지 않아MSA
와 같은 다양한 환경에서 동일한 로직을 사용 가능하다.구분 | Procedure 중심 접근법 | ORM(API 중심) 접근법 |
---|---|---|
위치 | 데이터베이스 내부 | 애플리케이션 계층 |
성능 | 빠름 (미리 컴파일된 형태, 데이터베이스에서 직접 실행) | 비교적 느림 (ORM 변환 및 DB 연결 오버헤드 존재) |
유지보수 | 로직 변경 시 DB 레벨 수정 필요 | 로직 변경 시 애플리케이션 코드 수정 |
이식성 | DB 종속성 높음 (Oracle 종속적) | DB 종속성 낮음 (ORM을 사용하여 DB를 쉽게 전환 가능) |
복잡도 | 복잡한 로직을 DB 내에 캡슐화 | 애플리케이션에서 로직 관리 |
보안 | 직접 테이블 접근 최소화 가능 (접근 통제 용이) | 애플리케이션에서 별도의 접근 제어 필요 |
CURSOR
의 효율적 관리CURSOR
사용 시, BULK COLLECT
등을 통해 성능 향상EXCEPTION
처리를 효과적으로 진행한다.OTHERS
를 바로 사용하기 보다는NO_DATA_FOUND
→ VALUE_ERROR
→ OTHERS
순서 등COMMIT
, ROLLBACK
의 호출 빈도를 최소한으로 트랜잭션을 설계한다.SQL
연산이 PL/SQL
연산보다 빠르므로, SQL
연산을 최대한 활용한다.[참고자료]