我应该关闭连接还是Spring会处理它?
@Autowired
MyRepository myRepository;
@Autowired
@Qualifier("myJdbc")
JdbcTemplate myJdbc;
@GetMapping("/v1/controlla-abilitazione")
public Set<String> controlloAbilitazione() {
try {
Connection conn = myJdbc.getDataSource().getConnection();
//Here I use previous connection to call an oracle PL/SQL via basic oracle jdbc
//Should I close connection?
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
(我知道我可以使用Spring来处理PL / SQL,但是从PL / SQL返回时,Spring没有对Oracle Type的本机支持)
没有尝试但是如果从Connection
对象执行SQL或PL / SQL查询,则不使用Spring JDBC功能来执行查询,因此您不应期望Spring为您关闭连接。它不知道数据源提供程序活动。
因此可能需要Connection.close()
。
这是一个理论,但你可以很容易地检查它。将Connection
存储在bean的字段中,并在方法的开头进行检查。
Connection conn;
@GetMapping("/v1/controlla-abilitazione")
public Set<String> controlloAbilitazione() {
if (conn != null && !conn.isClosed){
throw new RuntimeException("Oh it was not closed");
}
try {
conn = myJdbc.getDataSource().getConnection();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
现在调用您的控制器一次又一次。如果你得到例外,你知道为什么。