从JDBC到手写一个简单的ORM框架的演变

JDBC

使用代码连接数据库

首先我们来看下直接用JDBC来连接数据库并进行查询需要写哪些代码

public List<UserEntity> getLists() throws SQLException {

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        List<UserEntity> userEntities = new LinkedList<>();

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            connection = DriverManager.getConnection("jdbc:mysql://192.168.56.10:3306/common_sherlock?characterEncoding=utf-8", "root", "root");

            String sql = "SELECT * FROM `user` WHERE `name`= ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "sherlock");
            resultSet = preparedStatement.executeQuery();

            while(resultSet.next()) {
                UserEntity userEntity = new UserEntity();
                userEntity.setAge(resultSet.getInt("age"));
                userEntity.setId(resultSet.getInt("id"));
                userEntity.setName(resultSet.getString("name"));

                userEntities.add(userEntity);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            resultSet.close();
            preparedStatement.close();
            connection.close();
        }

        return userEntities;
    }

直接使用JDBC连接数据库产生的问题

  1. 不难看出, 每个操作数据库的方法, 都需要建立连接, 然后释放连接,这很浪费资源
  2. 加载的驱动类名称, 获取连接需要的url、账号、密码,编写的SQl语句,绑定的参数值,到最后的获取数据到实体类里面, 都是硬编码, 不利于维护
  3. 取出数据到实体类时,需要把每个元组中的每个属性一个一个的以硬编码的方式放到实体类里面去

解决方案

  1. 对于第一个问题,我们可以采用 连接池 的技术来解决与数据库的连接释放频繁的问题
  2. 对于第二个问题,我们可以采用配置文件的方式的解决硬编码的问题
    2.1 对于驱动类名称,连接需要的url,账号,密码这种不常变动的,我们应该放在一个配置文件里面
    2.2 对于SQL语句这类经常变化的,应当单独设置放在一个配置文件中
  3. 对于第三个问题,我们可以采用反射技术来进行赋值到实体类中

手写简单ORM框架

博主正在准备中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值