2013-03-07 2 views
2

코드 변경없이 nhibernate 인터셉터 (EmptyInterceptor 무시)를 사용하고 싶습니다.NHibernate 설정 XML 파일의 인터셉터를 사용하는 방법은 무엇입니까?

XML 설정 파일에서 할 수 있습니까?

내 EmptyInterceptor 재정의 클래스 :

public class QueryNumberInterceptor : EmptyInterceptor { 
     public override SqlString OnPrepareStatement(SqlString sql) { 
      return base.OnPrepareStatement(sql); 
     } 
} 

내 XML 설정 파일 :

<config> 
    <add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver, NHibernate"/> 
    <add key="dialect" value="NHibernate.Dialect.MsSql2008Dialect, NHibernate"/> 
    <add key="connection.connection_string" value="ConnectionString = ${MainConnection}"/> 
    <add key="show_sql" value="true"/> 
</config> 

답변

1

AFAIK, 당신은 설정 파일에 인터셉터를 주입 할 수 없다.

그러나 event listener을 등록 할 수 있습니다. 인터셉터로 할 수있는 것처럼 이벤트 리스너와도 똑같이 할 수 있습니다. 그러나 그것의 다른 개념은 그러므로 달라 보인다.

+0

생성 된 쿼리를 캡처 할 수있는 이벤트는 무엇입니까? –

+0

@ PatrickCelho 그 사건은 없습니다. 그러나 정말로해야 할 일을 알려주십시오 (SQL 힌트를 추가하고 쿼리를 변환 하시겠습니까?); 대체 접근법이있을 수 있습니다. –

+0

@DiegoMijelshon 생성 된 쿼리를 계산하고 30보다 큰 예외가 발생하면 N + 1 쿼리를 제거하는 데 도움이됩니다. –

관련 문제