jhyot jhyot - 3 months ago 43
Java Question

Run SQL statement at beginning of each DB connection in Spring Boot

How can I run a custom SQL statement directly after obtaining a DB connection with Spring Boot?

The SQL needs to be run each time a new connection is established.

The solution should work with the Spring Boot default DataSource implementation (which I think is a Tomcat pooling data source).

It doesn't really matter what the statement is, but in my case it will be

ALTER SESSION SET CURRENT_SCHEMA=xxxx

Answer

Tomcat Jdbc Connection pool has a parameter "initSQL" https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

It looks like you can configure each pool parameter in your .properties file (@see http://stackoverflow.com/a/25573035/280244)

So give a try,

Spring Boot before 1.4:

spring.datasource.initSQL=ALTER SESSION SET CURRENT_SCHEMA=xxxx

Spring Boot 1.4 or later:

spring.datasource.tomcat.initSQL=ALTER SESSION SET CURRENT_SCHEMA=xxxx
Comments