
최근 업무에서 사용하는 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연산을 최대한 활용한다.[참고자료]