Connection을 얻어오는 방법
Submitted by yisupark on 화, 03/09/2010 - 12:19
회사에서 사용하는 모듈 중에 Connection 객체를 넘겨서
트랜잭션을 처리하는 게 있습니다.
이럴 경우 connection을 어떻게 얻어올 수 있나요?


Anyframe을 사용중에 계신지요? 위 질문만으로는
Anyframe을 사용중에 계신지요? 위 질문만으로는 의도를 파악하기가 어렵습니다. Connection 객체를 파라미터로 전달하여 사용하면, 그대로 그 객체를 이용하여 사용시면 됩니다.
웹에서는 Anyframe을 사용하고 있습니다
웹에서는 Anyframe을 사용하고 있습니다.
모듈은 별도의 자바로 만들어진 클래스입니다.
웹에서 발생하는 action 중 하나가 해당 모듈을 사용해야 하는데
이때 모듈과의 transaction 처리를 위해 모듈에 있는
메소드에 파라미터로 connection 객체를 넘겨야 합니다.
AnyframeServiceImpl {
public void method1(){
1.Dao의 메소드 호출
2.외부 모듈 호출 (이런 식의 호출이 됩니다-> TESTER.test(Connection conn, Map parameters) )
3.Dao의 메소드 호출
}
}
AnyframeDaoImpl{
}
AnyframeServiceImpl의 method1에서 1과 3은 AnyframeDao를 사용하기에
transaction이 처리되지만
외부모듈의 경우는 transaction을 따로 처리할 수 없기 때문에
AnyframeServiceImpl에서 connection을 넘겨받거나 해야하는데
어떻게 처리해야하는것인지요.
(외부모듈이라 함은 다른 app에서도 사용하는 공통 모듈입니다.
anyframe을 사용하는 app도 있고 사용하지 않는 app도 있습니다.)
위 상황에서 만약
위 상황에서 만약 AnyframeServiceImpl가 Spring의 빈이라면 2가지 방법으로 connection을 가져올 수 있습니다.
1. AnyframeServiceImpl가 ApplicationContextAware를 구현토록하고 method1에서는 datasource를 context로부터 찾아서 connection을 가져올 수 있습니다.
2. AnyframeServiceImpl에 public void setDataSource(DataSource ds) 메소드를 추가하고, datasource injection합니다. 이후에는 이 클래스의 어디에나 이 datasource를 사용하여 connection을 획득할 수 있습니다.