FoxQueryMapper¶
Fox Query 기능에서 .foxml
파일들을 검색하고 XML 을 파싱하여 SQL 문장과 DB 매개변수 정보를 추출해 내는 작업은 FoxQueryMapper
객체에 의해 수행됩니다.
Overview¶
FoxDbAccess
객체는 ExecuteQuery-
류의 FoxQuery 관련 메서드들이 호출되면 FoxQueryMapper
를 호출하여 FoxQuery 정보를 요청합니다.
Note
FoxQueryMapper
는 모든 XML 파일들을 읽고 파싱하는데 소요되는 시간을 줄이기 위해 초기화 시점에는 .foxml
파일들의 목록만을 검색하여 유지합니다.
FoxQueryMapper
는 .foxml
파일 목록에서 요청된 .foxml
파일을 찾아 XML 을 파싱하여 FoxQuery 캐시에 FoxQuery 들을 추가하며 요청된 FoxQuery 정보(FoxQuery
객체)를 반환합니다. 이제 FoxDbAccess
는 FoxQueryMapper
가 반환한 FoxQuery
객체를 사용하여 Command
객체를 생성하고 생성한 Command
객체를 수행하고 결과를 반환합니다. 다음 코드는 이러한 과정을 보여줍니다.
FoxQueryMapper
객체들은 FoxDbAccess
에 의해 생성 및 관리되며 개발자는 직접 이 객체에 접근할 수 없습니다. 다만, neodeex.config.json
구성 설정을 통해 .foxml
파일들을 검색할 위치(디렉터리) 등의 설정을 수행할 수 있습니다.
FoxQueryMapper
설정¶
FoxQueryMapper
관련 구성 설정은 database:queryMappers
섹션 내에 FoxQueryMapper
설정들을 나열할 수 있습니다. 각 FoxQueryMapper
설정은 구분을 위해 고유한 이름을 사용해야 합니다.
-
directories
속성.foxml
파일을 검색할 디렉터리 경로들을 배열로 설정합니다. 디렉터리 경로는 절대 경로 혹은 상대 경로를 사용할 수 있으며 상대 경로는 앱 기본 디렉터리로부터의 상대 경로 입니다.directories
속성에 명시된 디렉터리들은 그 하위 디렉터리들을 재귀적으로 모두 포함합니다. 만약 하위 디렉터리를 제외하고자 한다면 디렉터리 이름 뒤에!
문자를 추가해야 합니다.FoxQueryMapper
는directories
에 나열된 디렉터리 및 그 하위 디렉터리에 대해서.foxml
을 검색할 뿐만 아니라.foxml
파일의 변경을 감시합니다. 만약.foxml
파일이 추가/변경/삭제되면 캐시해두었던 FoxQuery 정보를 무효화하고.foxml
파일 목록을 재구성합니다. 따라서 이 이후에 요청되는 FoxQuery 정보는 새롭게.foxml
파일을 읽어 구성되며 캐시 됩니다. -
files
속성사용할
.foxml
파일 경로를 배열로 설정합니다..foxml
파일 경로는 절대 경로 혹은 상대 경로를 사용할 수 있습니다. 디렉터리와 마찬가지로files
속성에 나열된.foxml
파일들은 변경을 감시하고 변경이 발생하면 다시 로드하게 됩니다. -
scriptLogger
속성FoxQuery 의 매크로 스크립트에서 사용하는 로거의 이름 입니다. 즉,
env.Log
속성이 나타내는 로거 이름을 지정합니다.
FoxQueryMapper
참조¶
queryMappers
섹션에서 정의된 여러 FoxQueryMapper
설정들 중 하나를 사용하기 위해서는 연결 문자열 설정에서 queryMapper
속성을 지정해 주어야 합니다. 즉, queryMappers
섹션에서 정의된 FoxQueryMapper
설정들 중 하나를 연결 문자열 설정에서 queryMapper
속성을 통해 참조하는 것입니다. 다음 예제는 연결 문자열에서 MyOralceMapper
라는 이름을 가진 FoxQueryMapper
설정을 참조하는 예를 보여 줍니다.
디폴트 FoxQueryMapper ¶
연결 문자열에 queryMapper
속성이 없는 경우 디폴트 설정의 FoxQueryMapper
가 사용됩니다. 디폴트 설정의 FoxQueryMapper
는 바꿀 수 없으며 내부적으로 생성되고 사용됩니다. 디폴트 설정의 FoxQueryMapper
는 다음과 같은 속성을 가집니다.
-
.foxml
검색을 위한 디렉터리는./foxml!
입니다../foxml
디렉터리의 하위 디렉터리는 검색하지 않음에 주의 하십시요. -
.foxml
파일의 추가/변경/삭제는 감시하지 않습니다. 즉,.foxml
파일의 다시 로드 기능은 사용되지 않습니다. -
스크립트 로거 설정은 포함하지 않습니다.
많은 경우, 디폴트 FoxQueryMapper
설정만으로 다양한 앱을 구성할 수 있습니다. 하지만 .foxml
파일 변경을 감지하고 다시 로드해야 하거나 다수의 .foxml
파일을 여러 디렉터리에 나누어 관리해야 한다면 디폴트 FoxQueryMapper
설정 대신 새로운 설정을 구성하고 참조해야 합니다.
Summary¶
FoxQueryMapper
는 .foxml
파일들을 검색하고 로드하며 Fox Query 정보를 담는 FoxQuery
객체를 생성하고 캐시 및 관리합니다. FoxQueryMapper
에 직접 접근은 불가능 하지만 구성 설정을 통해 .foxml
파일을 검색할 디렉터리 등을 지정할 수 있습니다. queyrMappers
섹션에서 여러 FoxQueryMapper
설정을 정의하고 연결 문자열 설정에서 이들 설정 중 하나를 참조하여 사용할 수 있습니다. 연결 문자열에서 특정 FoxQueryMapper
설정을 참조하지 않는 경우에는 간략화된 설정을 가진 디폴트 FoxQueryMapper
설정이 사용됩니다.