Spring JdbcTemplate JdbcDaoSupportの例

Spring + JdbcTemplate + JdbcDaoSupportの例

Spring JDBC開発では、JdbcTemplateクラスとJdbcDaoSupportクラスを使用して、データベース操作プロセス全体を簡素化できます。

このチュートリアルでは、最後のSpring + JDBC exampleを再利用して、前(JdbcTemplateサポートなし)と後(JdbcTemplateサポートあり)の例の違いを確認します。

1. JdbcTemplateを使用しない例

JdbcTemplateがなければ、すべてのDAOデータベース操作メソッド(挿入、更新、削除)で多くの冗長コード(接続の作成、接続のクローズ、例外の処理)を作成する必要があります。 効率的でなく、見苦しく、エラーが発生しやすく、退屈ではありません。

    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void insert(Customer customer){

        String sql = "INSERT INTO CUSTOMER " +
                "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
        Connection conn = null;

        try {
            conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, customer.getCustId());
            ps.setString(2, customer.getName());
            ps.setInt(3, customer.getAge());
            ps.executeUpdate();
            ps.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);

        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {}
            }
        }
    }

2. JdbcTemplateを使用した例

JdbcTemplateを使用すると、JdbcTemplateがそれを自動的に処理するため、冗長コードの入力を大幅に節約できます。

    private DataSource dataSource;
    private JdbcTemplate jdbcTemplate;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void insert(Customer customer){

        String sql = "INSERT INTO CUSTOMER " +
            "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";

        jdbcTemplate = new JdbcTemplate(dataSource);

        jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
            customer.getName(),customer.getAge()
        });

    }

別のを参照してください?

3. JdbcDaoSupportを使用した例

JdbcDaoSupportを拡張し、データソースを設定すると、クラス内のJdbcTemplateは不要になります。正しいデータソースをJdbcCustomerDAOに注入するだけです。 また、getJdbcTemplate()メソッドを使用してJdbcTemplateを取得できます。

    public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO
    {
       //no need to set datasource here
       public void insert(Customer customer){

        String sql = "INSERT INTO CUSTOMER " +
            "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";

        getJdbcTemplate().update(sql, new Object[] { customer.getCustId(),
                customer.getName(),customer.getAge()
        });

    }


    

        
        
        
        
    



    
        
    

Note
Spring JDBC開発では、JDBCコードを自分でコーディングするのではなく、常にJdbcTemplateJdbcDaoSupportを使用することをお勧めします。

ソースコードをダウンロード

ダウンロード–Spring-JDBC-Example.zip(15 KB)