본문 바로가기
Database/Oracle

[ORACLE] USER_TYPE_METHODS : 객체 타입 메서드 설계 및 분석 전략

by Papa Martino V 2025. 8. 10.
728x90

USER_TYPE_METHODS : 객체 타입 메서드 설계 및 분석 전략
[ORACLE] USER_TYPE_METHODS

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. 출처

728x90