数据库到Java对象的解决方案初探

概述

从事Java后台开发的程序员,几乎天天在和数据库打交道,无论是久经考验的关系型数据库,还是主键普及的NoSQL数据库,不可避免的都需要将数据转换到Java对象中,进入内存,才能被应用程序使用。
本文作为这一系列技术的初探,着眼于从数据库到Java对象的转换。

关系型数据库表到Java对象

  • 经典的处理方案(jdbc)
    • jdbc作为经典的Java对象和数据库交互的方式,在很长一段时间内占据着重要地位,用户通过加载驱动,建立连接,编写sql,解析数据和对象,完成一系列的操作。
    • 不得不承认,尽管jdbc非常的重要,但易用性的确不够好,无论何时,软件开发人员不得不写大量的模板代码,即使只是完成了非常简单的数据访问,比如select * from tablename;并且开发人员不得不被迫处理大量的异常,无法将有限的精力投放到需要实现的业务逻辑。
  • 常用的数据库到Java对象的解决方案(ORM框架)
    • Hibernate框架
      • 作为当下Java世界中流行的ORM框架,Hibernate提供了Java对象(POJO)和关系型数据库表框架的轻便型解决方案。
      • 以MySQL为例,每一张数据库表,都能够和Java对象组成映射关系,每一个Java对象的属性对应着相应数据表中的一个字段。多个数据表之间的依赖关系,主外键关联都能够通过对象之间的关系表达。当然,这样方便得表达不得不感谢Hibernate提供的强大功能,通过Hibernate提供的简单注解,完成数据到对象的完美转换。
      • 软件开发人员在绝大多数情况下,更可以通过方便得API,使用面向对象的方式处理和数据库之间的交互,从而摆脱了sql编码的时代。
    • Mybatis框架
      • 和Hibernate一样,作为方便高效的ORM框架,MyBatis是Hibernate的强有力的竞争对手。
      • 与Hibernate不同的是,MyBatis在做数据库表和Java对象的映射转换时,给予用户更加宽松的选择。用户可以在配置中填写需要的sql,由此达到更加针对性的映射对象的构成。
      • 只要用户可以想到的sql,都可以在MyBatis的配置中完成数据库和Java对象间的转换支持。
  • ORM框架带来的问题
    由于ORM框架是将Java对象和表定义进行映射的,那么在表设计和业务需求相对复杂的情况下,entity类的数量也会同样的增加,复杂度也相应提高,开发人员不得不去维护大量的实体类以及实体类之间的关系。
  • 其他解决方案

    • 数据库表定义到HashMap的映射转换
      • 熟悉oracle,mysql等关系型数据库的人员都知道,这些优秀的数据库提供了足够多的数据库维护的表和视图,比如oracle的v$instance,user_tables,user_tab_columns等,
      • 如果对这些加以利用,可以将数据库的表定义,数据维护,转换为Map对象,进行维护,当然这样的处理方式,必须要有进行多层次框架封装,优化和简化和数据库之间的交互,这样的处理方案是需要时间和成本的。
  • 优秀的开发者总有新的解决方案,对数据库的探索永无止境

你可能感兴趣的:(java,数据库,java,对象)