728x90

1. USER_TYPE_METHODS란?
USER_TYPE_METHODS는 Oracle 데이터베이스에서 사용자가 정의한 객체 타입(OBJECT TYPE)에 포함된 **메서드(Method)** 정보를 제공하는 데이터 딕셔너리 뷰입니다. 객체 타입은 속성(Attributes)과 함께 메서드(Functions, Procedures)를 정의할 수 있으며, 이 뷰를 통해 객체 내부 로직의 목록 및 정의 구조를 확인할 수 있습니다. 객체 지향 데이터베이스 설계에서 메서드는 **캡슐화된 비즈니스 로직**을 표현하는 수단이며, 데이터 처리와 로직 수행을 객체 수준에서 결합하여 모듈화 및 재사용성 향상을 가능하게 합니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TYPE_NAME | 메서드가 정의된 객체 타입 이름 |
| METHOD_NAME | 메서드의 이름 |
| METHOD_NO | 메서드의 고유 번호 (오버로딩 지원) |
| METHOD_TYPE | 메서드 유형 (PROCEDURE, FUNCTION) |
| PARAMETERS | 파라미터 개수 |
| RESULT_TYPE_NAME | FUNCTION 메서드의 반환 타입 (PROCEDURE일 경우 NULL) |
| SELFISH | SELF 참조 포함 여부 (YES/NO) |
3. 실전 활용 예제
3.1. 정의된 객체 메서드 전체 조회
SELECT
TYPE_NAME,
METHOD_NAME,
METHOD_TYPE,
PARAMETERS,
RESULT_TYPE_NAME
FROM
USER_TYPE_METHODS
ORDER BY
TYPE_NAME, METHOD_NAME;
3.2. 특정 타입에 정의된 메서드 목록
SELECT
METHOD_NAME,
METHOD_TYPE,
SELFISH
FROM
USER_TYPE_METHODS
WHERE
TYPE_NAME = 'EMPLOYEE_OBJ';
3.3. FUNCTION 메서드만 조회
SELECT
TYPE_NAME,
METHOD_NAME,
RESULT_TYPE_NAME
FROM
USER_TYPE_METHODS
WHERE
METHOD_TYPE = 'FUNCTION';
4. USER_TYPE_METHODS vs 관련 객체 뷰 비교
| 뷰 이름 | 설명 | 조회 대상 | 주요 용도 |
|---|---|---|---|
| USER_TYPES | 사용자 정의 타입의 기본 정보 | 타입 이름, 속성 수, 메서드 수 | 개요 파악 |
| USER_TYPE_ATTRS | 객체 타입에 정의된 속성 정보 | 속성명, 타입, 순서 등 | 객체 구조 분석 |
| USER_TYPE_METHODS | 객체 타입에 정의된 메서드 목록 | 함수/프로시저 형태의 메서드 | 로직 캡슐화 분석 |
| USER_METHOD_PARAMS | 각 메서드의 인자 정보 | 입출력 파라미터 세부 목록 | 메서드 사용 방법 파악 |
5. USER_TYPE_METHODS 활용 전략
- 로직의 캡슐화: 객체 내부에 프로시저/함수를 정의하여 처리 책임을 데이터에 묶음
- 타입 기반 API 문서화: 각 객체 타입의 메서드 구조를 기반으로 API 스펙 도출
- OOP 설계 검증: SELFISH 여부를 통해 객체 중심 설계의 정합성 확인
- 리팩토링 대상 분석: 중복되거나 불필요한 메서드를 도출하여 정리
6. 주의사항
- 오버로딩 처리: 동일한 METHOD_NAME이 METHOD_NO로 구분될 수 있음
- 호출 권한: DEFINER와 CURRENT_USER 모드에 따라 실행 권한 차이 발생 가능
- 메서드 의존성: 객체 타입 변경 시 종속된 패키지/뷰/트리거에도 영향 발생
7. 결론
USER_TYPE_METHODS는 Oracle에서 객체 타입 내에 정의된 메서드의 구조를 이해하고 문서화하는 데 핵심적인 역할을 합니다. 객체 지향 설계와 로직 캡슐화를 데이터베이스 수준에서 실현하고자 할 때, 이 뷰를 활용하면 모듈화, 보안성, 재사용성 향상이라는 OOP의 이점을 데이터 계층에 효과적으로 구현할 수 있습니다.
8. 출처
- Oracle Corporation. Oracle Database Reference
- Steven Feuerstein, 『Oracle PL/SQL Programming』
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_UPDATABLE_COLUMNS : 컬럼 수정 가능 여부 진단과 활용 전략 (0) | 2025.08.11 |
|---|---|
| [ORACLE] USER_UNUSED_COL_TABS : 삭제된 컬럼 정보 조회와 정리 전략 (0) | 2025.08.11 |
| [ORACLE] USER_TYPE_ATTRS : 사용자 정의 객체 타입 속성 분석 가이드 (0) | 2025.08.10 |
| [ORACLE] USER_TYPES : 사용자 정의 객체 타입 완전 분석 가이드 (0) | 2025.08.09 |
| [ORACLE] USER_TS_QUOTAS : 사용자 테이블스페이스 할당량 진단과 관리 전략 (0) | 2025.08.09 |