1. 程式人生 > >ssm框架學習---傳統使用jdbc連線資料庫的問題

ssm框架學習---傳統使用jdbc連線資料庫的問題

在使用jdbc來操作資料庫時,首先要準備對應的資料庫連線的jar包,使用jdbc連線資料庫的一般程式碼如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * Created by ajin on 16-12-14.
 */
public class JdbcConnect {
    public static void main(String[] args){
        //資料庫連線
        Connection connection =null;
        //預編譯的Statement,使用這種預編譯的statement可以提高資料庫的效能,還能防止sql注入
        PreparedStatement preparedStatement =null;
        //結果集
        ResultSet resultSet =null;

        try{
            //載入資料庫的驅動,這裡使用mysql
            Class.forName("com.mysql.jdbc.Driver");
            //通過驅動管理器來獲得資料庫的連線
            connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis","root","admin");
            //定義sql語句
            String  sql="select * from userinfo where name = ?";
            //獲取預處理的statement
            preparedStatement=connection.prepareStatement(sql);
            //設定佔位符的引數
            preparedStatement.setString(1,"zcj");
            //向資料庫發出sql進行查詢,查詢出結果集
            resultSet=preparedStatement.executeQuery();
            //遍歷結果集
            while(resultSet.next()){
                System.out.print(resultSet.getString("id"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //釋放資源,注意倒著釋放
            if(resultSet!=null){
                try{
                    resultSet.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try{
                    preparedStatement.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

            if(connection!=null){
                try{
                    connection.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}
使用這種方式存在的問題:

(1)資料庫連線,使用時建立連線,不使用就釋放,對資料連線釋放頻繁,造成資料庫資源浪費,影響效能   

解決辦法:資料庫連線池

(2)sql語句硬編碼,不利於sql語句修改的維護,   設想:將sql語句配置到xml檔案中,sql變化,不需要重新編譯java程式碼

(3)設定引數硬編碼,設想,將sql語句佔位符和引數全部配置到xml中

(4)從resultSet中比那裡結果集資料,存在硬編碼  設想,將查詢的結果集自動對映為java物件

(5)對程式設計師來講,更加關心的是sql語句編寫和引數設定這部分內容,連線的建立和釋放並不需要每次都關心, 設想:程式設計師可以更多的關注sql語句編寫和引數設定問題