Multiple JdbcTemplate instances or not?

后端 未结 4 1725
一向
一向 2021-02-04 01:01

From what I understand, both DataSource and JdbcTemplates are threadsafe, so you can configure a single instance of a JdbcTempla

4条回答
  •  广开言路
    2021-02-04 01:53

    so it should be spilt two situations:

    We don’t change JdbcTemplate properties in DAO, we can define as below:

            
        
    

    NOTE: Most of time we don’t change the JdbcTemplate properties, because it is not necessary.

    We change JdbcTemplate properties in DAO, we should be extends JdbcDaoSupport.

    State:
    •   fetchSize: If this variable is set to a non-zero value, it will be used for setting the fetchSize property on statements used for query processing(JDBC Driver default)
    •   maxRows: If this variable is set to a non-zero value, it will be used for setting the maxRows property on statements used for query processing(JDBC Driver default)
    •   queryTimeout: If this variable is set to a non-zero value, it will be used for setting the queryTimeout property on statements used for query processing.(JDBC Driver default)
    •   skipResultsProcessing: If this variable is set to true then all results checking will be bypassed for any callable statement processing.  This can be used to avoid a bug in some older Oracle JDBC drivers like 10.1.0.2.(false)
    •   skipUndeclaredResults: If this variable is set to true then all results from a stored procedure call that don't have a corresponding SqlOutParameter declaration will be bypassed. All other results processing will be take place unless the variable {@code skipResultsProcessing} is set to {@code true}(false)
    •   resultsMapCaseInsensitive: If this variable is set to true then execution of a CallableStatement will return the results in a Map that uses case insensitive names for the parameters if Commons Collections is available on the classpath.(false)
    
    1. JdbcDaoSupport

      public abstract class JdbcDaoSupport extends DaoSupport {

      private JdbcTemplate jdbcTemplate;
      
      
      /**
       * Set the JDBC DataSource to be used by this DAO.
       */
      public final void setDataSource(DataSource dataSource) {
          if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
              this.jdbcTemplate = createJdbcTemplate(dataSource);
              initTemplateConfig();
          }
      }
      

    summary: I don’t think spring give the practice in guide is the best.

提交回复
热议问题