A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiao北 初级黑马   /  2018-10-16 19:20  /  2217 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前言
在黑马上了接近两个月的课程,最近课程为MySQL,Mybatis,Spring等内容.
黑马的程序每项解决的知识点进行了提炼,很适合学员快速入门某项技术.但是各项技术历史发展沿革很少提及.各项技术之间的联系也很少提到.容易造成迷于细节,疏于脉络.
故搜索了资料,整理了Java持久化部分的脉络,理清各项技术所解决的问题和优缺点.
Java 持久化
为了解决断电后数据保存的问题,将数据(Java的对象)保存在磁盘中.
  • 序列化和反序列化
    序列化 重要的Java对象转化为二进制文件存储在硬盘
    反序列化 从硬盘上把二进制文件转化为Java对象

    • 缺陷 效率低
      • 大规模数据存储和查询的时候,几乎不可用

  • 数据库

    • 优点
      SQL,屏蔽了具体的实现细节和各个数据库之间的差异
    • 关系型数据库
      关系数据库就是用类似二维表格的方式来存储数据

      • 优点
        有强大的理论基础,像什么关系代数,关系演算.现在发展的非常成熟,可以进行大规模的数据存储和查询,还支持事务操作.
      • 需要解决的问题

        • 基本需求 一个是表格的行和列,一个是对象的属性.
        • 高级需求 需要支持安全,事务,分布式、可伸缩性,高可用性.....等高级功能. (这部分操作系统和应用程序不想去负责)
      • 解决方法
        Object-Relational Mapping

        • JDBC(Java Database Connectivity)
          Java组织定义接口,具体的JDBC实现必须由各个数据库去提供.
          • 缺陷 明显劣势,只解决基本需求
            这是一个非常“低级”的接口,程序员需要处理太多的细节, 冗余代码太多,写个简单的查询就得一大堆代码伺候,打开connection,创建statement,执行sql,遍历resultset, 还得记住关闭connection,要不然会资源泄露.
        • middleware(中间件)
          专门负责底层操作系统和上层应用程序都不愿意做的事情.
          Java组织制定了一套J2EE的规范,包含大部分企业开发的需求.把通用的,复杂的服务交给中间件提供商去搞定,让开发人员集中在业务逻辑的开发上.

          • 可扩展 (Scalable)
          • 分布式 (Distributed)
          • 事务处理(Transactional)
          • 数据存储(Persistent)
          • 安全性 (Secure)
          • 重量级 EJB Enterprise Java Beans(EJB)称为Java 企业Bean
            EJB规范最初由IBM在1997年开发,后来在1999年被Sun Microsystems (EJB 1.0和1.1)采用.
            使用EJB避免JDBC那些烦人的代码,数据的创建,读取,甚至查询都可以用面向对象的风格搞定,EJB实例还可以在一个集群上分布式运行.
            在Websphere,Weblogic,Jboss等应用服务器的支持和鼓噪下,J2EE在初期热度非凡.横扫企业级市场.

            • 缺陷 表面光鲜
              • 开发繁琐
              • 难于测试
              • 性能低下

          • 轻量级 O/R Mapping框架

            • Hibernate
              2001年,由Gavin King开发. Hibernate(过冬),比如数据冬存春取.
              可以把Java的属性用声明的方式映射到数据库表,完全不用你操心connection,sql这些细节.
              Hibernate使用,简单,灵活,脱离庞杂昂贵的Websphere,weblogic容器也能使用.
            • MyBatis(前身iBatis)
              2001年,由Clinton Begin发起的开放源代码项目.于2010年6月16日被谷歌托管,改名为MyBatis.
              是一个基于SQL映射支持Java和·NET的持久层框架,
              iBatis最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis是能够满足你的要求又足够灵活的最简单的解决方案.
            • Hibernate vs MyBatis
              目前主流的 ORM(对象关系映射),无论Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO(Plain Ordinary Java Object 简单的Java对象)到数据库表的全套映射机制.程序员往往只需定义好了 POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作.程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行.
              当系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标.此时Hibernate不能解决优化的问题,只能直接使用JDBC去解决.
              “半自动化”的ibatis,却刚好解决了这个问题.这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行.而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系.也就是说,ibatis并不会为程序员在运行期自动生成 SQL 执行.具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO.

          • Spring
            2004年,由Rod Johnson创建.Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.
            Rod Johnson写了一本《Expert One-on-One J2EE Development without EJB 》,公然宣扬不使用EJB,而使用更加轻量级的框架.
            Spring不但自己提供了轻量级的访问数据库的方法JDBCTemplate,还能轻松的集成Hibernate,MyBatis(iBatis)等一批工具.
            目的解决企业应用开发的复杂性,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能.

                          以上是我来黑马为期两个月的学习经历!

8 个回复

倒序浏览
沙发自己的~
回复 使用道具 举报
技术性的帖子! 大神啊!
回复 使用道具 举报
感谢分享!
回复 使用道具 举报
看的不是很懂,但是好厉害的样子
回复 使用道具 举报
很宝贵的学习经历贴,献上我的膝盖!
回复 使用道具 举报
高手就是不一样啊!
回复 使用道具 举报
听说是你找了很久的资料找出来的
回复 使用道具 举报

每个人都会有瓶颈期!但是看来大神你没有!加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马