zoukankan      html  css  js  c++  java
  • Hibernate入门学习(一)

    一、Hibernate是什么

      Hibernate主要用来实现Java对象和数据表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate是一个轻量级的ORMapping框架,ORMapping(Object Relational Mapping)原理简单来说就是将关系型的数据表映射成面向对象实体,参考下图:
      可以从图中很清晰的看到,Tbl_user表格中的每一条记录都可以被映射表为一个UserModel实例对象。
      ORMapping基本对应规则为:
      1、类跟表相对应
      2、类的属性跟表的字段相对应
      3、类的实例与表中具体的一条记录相对应
      4、一个类可以对应多个表,一个表也可以对应对个类(多对多的映射关系)
      5、DB中的表可以没有主键,但是Object中必须设置主键字段
      6、DB中表与表之间的关系(如:外键)映射成为Object之间的关系 
      7、Object中属性的个数和名称可以和表中定义的字段个数和名称不一样(映射对象之间可以有差异)
      ORMapping的基本实现方式:
      使用JDBC,用SQL来操作数据库,只是看自动生成还是人工写代码来实现,其实在很多场景下都有过这样的应用。参见下图所示:
           
     
      左边这张图中表示通过手动方式实现ORMapping,右边这张图表示Hibernate来实现ORMapping。右边这张图很清晰的指出了Hibernate实现对象与数据库表格之间映射关系的奥妙,Hibernate是通过两个关键的xml(配置)文件来得知如何映射对象关系的,所以可以猜测到这两个配置文件应该是非常关键的,并且比人工写JDBC语句来操作数据库肯定简单很多。
    二、Hibernate能干什么
      Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中95%的任务量。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;但是对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是最有用的。Hibernate可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。
      Hibernate在应用架构中的关系参见下图所示:
      Hibernate的高层概要图如下图所示:
      图中可以看出,Application只需操作Hibernate架构中的Persistent Objects即可。针对Database的操作全部交给Hibernate进行处理,而Hibernate又是依靠两个配置参数进行具体的连接,分别是:Hibernate properties(可以理解为上面提到的XXX.cfg.xml)和XML Mapping(对应上面提到的XXX.hbm.xml)。
      我们可以对比一下使用Hibernate的“最小”体系结构和“全面”体系结构的示意图:
      上图中左边表示“最小”体系结构,要求应用程序提供自己的 JDBC 连接并管理自己的事务。这种方案使用了Hibernate API 的最小子集。
      上图中右边表示“全面”体系结构,Hibernate将应用层从底层的JDBC/JTA API中抽象出来,而让Hibernate来处理这些细节。从这个“全面”的Hibernate结构中可以看到有五个“关键模块”,这五个模块表示的含义分别如下:
    (1)SessionFactory (org.hibernate.SessionFactory)
      针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。 它是生成Session的工厂,本身要用到ConnectionProvider。
    (2)Session (org.hibernate.Session)
      表示应用程序与持久储存层之间交互操作的一个单线程对象,此对象生存期很短,隐藏了JDBC连接,也是Transaction的工厂。
    (3)Transaction (org.hibernate.Transaction)
      应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。
    (4)ConnectionProvider (org.hibernate.connection.ConnectionProvider)
      生成JDBC连接的工厂(有连接池的作用)。它通过抽象将应用从底层的Datasource或DriverManager隔离开。仅供开发者扩展/实现用,并不暴露给应用程序使用。
    (5)TransactionFactory (org.hibernate.TransactionFactory)
      生成Transaction对象实例的工厂。仅供开发者扩展/实现用,并不暴露给应用程序使用。
     
    小结:
      本篇文章主要介绍了Hibernate的基本概念和体系结构。
     
     
     
  • 相关阅读:
    多测师讲解python _函数的传递_高级讲师肖sir
    多测师讲解pthon _函数__return_高级讲师肖sir
    多测师讲解python _函数中参数__高级讲师肖sir
    前端 HTML body标签相关内容 常用标签 图片标签 <img/>
    mysql 操作sql语句 操作数据库
    python web框架 MVC MTV
    linux dmesg 查看系统故障信息
    linux uniq 命令
    linux md5sum命令
    Python 字典 items() 方法
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/4053741.html
Copyright © 2011-2022 走看看