【MyBatis02】原生JDBC操作的问题

通常,使用原生的JDBC来完成ORM操作大致的代码如下:

Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
    //1、加载数据库驱动
    Class.forName("oracle.jdbc.OracleDriver");
    //2、通过驱动管理类获取数据库链接
    connection = DriverManager.getConnection("jdbc:xxxxx", "xxx", "xxx");
    //3、定义sql语句 ?表示占位符   
    String sql = "select * from t_user where t_name = ?";            
    //4、获取预处理statement            
    preparedStatement = connection.prepareStatement(sql);            
    //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值           
    preparedStatement.setString(1, "xxx");           
    //6、向数据库发出sql执行查询,查询出结果集          
    resultSet = preparedStatement.executeQuery();      
    //7、遍历查询结果集        
    while (resultSet.next()) {       
        System.out.println(resultSet.getString("t_id") + "  " + resultSet.getString("t_name"));      
    }   
} catch (Exception e) {    
    e.printStackTrace();   
} finally {         
    //8、释放资源     
    if (resultSet != null) {    
        try {    
            resultSet.close();   
        } catch (SQLException e) {          
            e.printStackTrace();       
        }       
    }         
    if (preparedStatement != null) {    
        try {     
            preparedStatement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } 
}

问题总结:

  • 存在硬编码问题

    • 创建连接硬编码

    • 执行statement硬编码

  • 效率低下

    • 频繁的开启的关闭数据库连接,会造成数据库性能下降

    • 存在大量代码冗余

    • 查询效率低,没有对数据访问进行优化

  • 需要大量人工操作

    • Connection、Statement等需要手工创建

    • 将查询结果封装成实体对象需要手工进行

版权声明:
作者:jackqiang
链接:http://www.jackqiang.com/framework/mybatis/1916/jdbc_questions/
来源:JackQiang's
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录