Hibernate 架构是分层的,作为数据访问层,你不必知道底层 API 。Hibernate 利用数据库以及配置数据来为应用程序提供持续性服务(以及持续性对象)。

下面是一个非常高水平的 Hibernate 应用程序架构视图。

下面是一个详细的 Hibernate 应用程序体系结构视图以及一些重要的类。

Hibernate 使用不同的现存 Java API,比如 JDBC,Java 事务 API(JTA),以及 Java 命名和目录界面(JNDI)。JDBC 提供了一个基本的抽象级别的通用关系数据库的功能, Hibernate 支持几乎所有带有 JDBC 驱动的数据库。JNDI 和 JTA 允许 Hibernate 与 J2EE 应用程序服务器相集成。

下面的部分简要地描述了在 Hibernate 应用程序架构所涉及的每一个类对象。

配置对象

配置对象是你在任何 Hibernate 应用程序中创造的第一个 Hibernate 对象,并且经常只在应用程序初始化期间创造。它代表了 Hibernate 所需一个配置或属性文件。配置对象提供了两种基础组件。

  • 数据库连接:由 Hibernate 支持的一个或多个配置文件处理。这些文件是 hibernate.propertieshibernate.cfg.xml
  • 类映射设置:这个组件创造了 Java 类和数据库表格之间的联系。

SessionFactory 对象

配置对象被用于创造一个 SessionFactory 对象,使用提供的配置文件为应用程序依次配置 Hibernate,并允许实例化一个会话对象。SessionFactory 是一个线程安全对象并由应用程序所有的线程所使用。

SessionFactory 是一个重量级对象所以通常它都是在应用程序启动时创造然后留存为以后使用。每个数据库需要一个 SessionFactory 对象使用一个单独的配置文件。所以如果你使用多种数据库那么你要创造多种 SessionFactory 对象。

Session 对象

一个会话被用于与数据库的物理连接。Session 对象是轻量级的,并被设计为每次实例化都需要与数据库的交互。持久对象通过 Session 对象保存和检索。

Session 对象不应该长时间保持开启状态因为它们通常情况下并非线程安全,并且它们应该按照所需创造和销毁。

Transaction 对象

一个事务代表了与数据库工作的一个单元并且大部分 RDBMS 支持事务功能。在 Hibernate 中事务由底层事务管理器和事务(来自 JDBC 或者 JTA)处理。

这是一个选择性对象,Hibernate 应用程序可能不选择使用这个接口,而是在自己应用程序代码中管理事务。

Query 对象

Query 对象使用 SQL 或者 Hibernate 查询语言(HQL)字符串在数据库中来检索数据并创造对象。一个查询的实例被用于连结查询参数,限制由查询返回的结果数量,并最终执行查询。

Criteria 对象

Criteria 对象被用于创造和执行面向规则查询的对象来检索对象。

转载于:https://www.cnblogs.com/xiaobaizhiqian/p/7910707.html

Hibernate---架构相关推荐

  1. Hibernate架构

    Hibernate架构 参照: http://blog.csdn.net/lovesummerforever/article/details/19169779 http://www.w3cschool ...

  2. Hibernate架构概述

    下图提供了Hibernate体系结构的高级视图: 最小的架构 "最小"架构使应用程序管理其自己的JDBC连接,并将这些连接提供给Hibernate: 此外,应用程序自行管理交易. ...

  3. Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数

    一.问题 我们调用数据,大都是可以直接获取表中的数据,或者用复杂点的sql语句组成的.但是,有时候,当这样达不到我们要的全部数据的时候,这时,我们就用到了存储过程[sp],如果sp需要参数是数组的话, ...

  4. jdbc与hibernate的优缺点比较

    jdbc与hibernate的优缺点比较 一. Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以 ...

  5. 配置hibernate手动配置

    为什么80%的码农都做不了架构师?>>>    手动配置: 1.CROD 操作 界面 testmain.java Domain service 数据持久层 数据库 Mysql Ore ...

  6. Hibernate和JDBC、EJB比较

    参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...

  7. Java Hibernate模板 学习总结

    使用Hibernate模板 与Hibernate进行交互的主要接口是org.hibernate.Session.这个Session接口提供了基本的数据访问功 能,比如从数据库保存.更新.删除和加载对象 ...

  8. Hibernate初学者教程

    Hibernate初学者教程 欢迎来到Hibernate初学者教程.Hibernate是最广泛使用的Java ORM工具之一.大多数应用程序使用关系数据库来存储应用程序信息,在较低级别,我们使用JDB ...

  9. Hibernate缓存 - 第一级缓存

    Hibernate缓存 - 第一级缓存 欢迎使用Hibernate缓存 - 一级缓存示例教程.最近我们研究了Hibernate架构,hibernate映射以及如何使用HQL以面向对象的方式触发SQL查 ...

  10. MySQL+Hibernate下连接空闲8小时自动断开问题解决方案

    本文转自http://blog.sina.com.cn/s/blog_6e6bbaf20100uocd.html,所有权利归原作者所有. 前段时间刚完成一个项目,数据库为MySQL5.0,持久层使用H ...

最新文章

  1. Java synchronized 实现生产者-消费者模型
  2. 【XAudio2】5.如何初始化 XAudio2
  3. 语法之知识点的改进(Func/Action)
  4. html网页效果分析,熟手的html编写风格与原因分析_HTML/Xhtml_网页制作
  5. java runtime 异常_Java中RuntimeException和Exception
  6. 关于 iOS 证书,你必须了解的知识
  7. 轻量级数据交换格式JSON
  8. 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
  9. iOS 疑难杂症 — — 推送本地国际化 loc-key 本地化失败的问题
  10. Web安全攻防渗透测试实战指南笔记 三
  11. 【三思笔记】 全面学习Oracle分区表及分区索引
  12. ansys linux运行_ANSYS|大型Linux计算机ANSYS运算要点
  13. echarts社区网址
  14. 百度网盘百度云倍速播放破解
  15. paraview使用GUI连接服务器
  16. 强烈推荐7个国外图片资源网站
  17. unity 简易太空大战
  18. 天气预报小程序的设计与实现
  19. 数据结构与算法——23. 用嵌套列表与链表实现树结构
  20. oppo计算机快捷方式,OPPO怎么把快捷方式添加到桌面 OPPO把快捷方式添加到桌面方法...

热门文章

  1. Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理
  2. hadoop伪分布式配置修改配置文件的时候无法保存(没有权限保存)
  3. java中搭建流水线,部署流水线搭建小记:Docker、Jenkins、Java 和 Couchbase
  4. python交互式shell_交互式 shell 玩转 Python
  5. html实体编码_多视角学习 | 当自动编码器“遇上”自动编码网络
  6. c# 分类 机器学习_C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”...
  7. laravel increment出现了翻倍递增_中国股市:如何判断“强庄股”的出现,看懂主力心甘情愿送钱上门...
  8. 三面求对称二叉树_字节跳动后端实习面经,一面+二面+三面(已收到offer)
  9. 说实话,这个发布会绝了!
  10. 来,看看这20个常用的宏定义!