ssm框架學習---傳統使用jdbc連線資料庫的問題
阿新 • • 發佈:2019-02-11
在使用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語句編寫和引數設定問題