Spring을 사용하여 배치를 개발 중입니다. 쿼리를 수행하려면 JdbcTemplate을 사용하십시오. 내 특정한 경우 JdbcTemplate을에서JdbcTemplate에서 수행 한 쿼리를 표시하도록 Spring을 구성하는 방법은 무엇입니까?
는 봄 JdbcDaoSupport 클래스를 연장하는 DAO 클래스에 제공되는, 그래서 나는 다음과 같은 DAO 있습니다
@Service
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PucManagerColl extends JdbcDaoSupport {
private static Logger log = Logger.getLogger(PucManagerProd.class);
public PucManagerColl() {
System.out.println("Costruzione PucManager");
}
@Autowired
public PucManagerColl(@Qualifier("dataSourcePUCColl") DataSource dataSource) {
setDataSource(dataSource);
}
...............................................................
...............................................................
public void insertTirConsolidatoPolizza(TassoRendimentoInterno tri) {
log.debug("PucManagerColl.insertTirConsolidatoPolizza()");
String sql = "INSERT INTO TirConsolidatoPolizza "
+ "("
+ "Polizzaid, "
+ "PercentualeRendimentoDaInizioGestione, "
+ "PercentualeRendimentoDaInizioAnno, "
+ "PercentualeRendimentoDaInizioTrimestre, "
+ "ControvaloreFinaleBF, "
+ "DataRiferimentoNav"
+ ") "
+ "VALUES (?, ?, ?, ?, ?, ?, ?)";
this.getJdbcTemplate().update(sql,
new Object[] { tri.getPolizzaID(),
tri.getPercRendimentoInizioSottoscrizione(),
tri.getPercRendimentoInizioAnno(),
tri.getPercRendimentoInizioTrimestre(),
tri.getControvaloreQuote(),
tri.getDataRiferimentoNavPUC()});
log.debug("TERMINATO: PucManagerColl.insertTirConsolidatoPolizza()");
}
}
이 클래스를 볼 수 있듯이이 확장 Spring 클래스 JdbcDaoSupport를이고 데이터 소스가 생성자에 삽입됩니다.
문제는 insertTirConsolidatoPolizza() 메소드는TirConsolidatoPolizza 테이블에 레코드를 삽입 할 수 있다는 것이다. 나는 아무런 오류도없고 징벌도받지 않는다. 왜? 내 질문에 어떤 문제가 있습니까?
에 의해 생성 된 쿼리를 디버그하고 JdbcTemplate을 수동으로 데이터베이스 프롬프트로 수행하려고하지만 볼 수 없습니다. Seeing the underlying SQL in the Spring JdbcTemplate?
공식 doumentation :
이 기사를 읽기 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html
내가 디버그 모드 또는 같은에서 쿼리를 기록 할 JdbcTemplate을을 구성 할 수 날 것으로 보인다. 다른 포스트 쇼에서
이 XML 조각
그것을 할 수 있습니다 :<category name="org.springframework.jdbc.core.JdbcTemplate">
<priority value="debug" />
</category>
하지만 넣어 해일 어디 정확히 모른다.
이것은 DB 연결 (I 메인 구성 applicationContext.xml 파일로이 파일을 가져올 수)에 대한 정보가 포함되어 내 databaseConfiguration.xml입니다 : 나는에 쿼리 로깅을 구성하는 방법
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<tx:annotation-driven transaction-manager="tjtJTransactionManager" />
<!-- DB CONNECTIONS: -->
<bean id="tjtJTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
scope="singleton">
<property name="dataSource" ref="dataSourcePUC" />
</bean>
<!-- PROFILO DI PRODUZIONE -->
<beans profile="PROD">
<bean id="dataSourcePUC" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://XXX.myCompany.YYYY.it:1433/DB_1" />
<property name="username" value="username" />
<property name="password" value="pswd" />
</bean>
</beans>
<!-- PROFILO DI COLLAUDO -->
<beans profile="COLL">
<bean id="dataSourcePUC" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://XXXX.MYCOMPANY.YYYY.it:1433/DB_2" />
<property name="username" value="username" />
<property name="password" value="pswd" />
</bean>
</beans>
</beans>
을 내 stacktrace에서 수행 된 쿼리를 볼 수 있습니까?
같이해야합니까? – eatSleepCode
'insertTirConsolidatoPolizza'에'@Transaction'을 붙일 필요가 있다고 생각합니다. – eatSleepCode
'org.springframework.jdbc.core.JdbcTemplate' 패키지를 적어도 DEBUG 모드로 설정해야합니다. 이는 로깅 구성 중 어느 것을 사용하든 관계없이 수행됩니다. – Vaelyr