Hibernate初识

  1. 云栖社区>
  2. 博客>
  3. 正文

Hibernate初识

爆米花9958 2017-08-14 11:35:26 浏览641
展开阅读全文
简介
相信学过SSH2框架的同学们对Hiberate一点也不陌生。Hibernate是Gavin King于2001年开始,作为EJB2风格实体bean的替代品开发的对象关系映射工具。Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。ORM工具简化了数据创建,数据处理和数据访问。它是将对象映射到数据库中存储的数据(表)的编程技术。 Hibernate的稳定版本到目前(2017年3月)是Hibernate 5.2.9。
Hibernate框架
由于数据在对象与关系数据库之间的表示方式不同,开发成本明显更高。Hibernate是针对Java环境的对象/关系映射(ORM)解决方案。Hibernate框架简化了java应用程序与数据库交互的开发。Hibernate负责从Java类到数据库表以及从Java数据类型到SQL数据类型的映射。此外,它还提供数据查询和检索设施。它可以显着减少开发时间,否则在SQL和JDBC中手动处理数据。Hibernate的设计目标是通过消除对使用SQL和JDBC的手动,手工制作的数据处理的需要,缓解开发人员95%的常见数据持久性编程任务。

ORM工具内部使用JDBC API与数据库进行交互。
Hibernate框架的优点
Hibernate框架有很多优点。它们分别如下:
● 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具。
● 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用。 hibernate框架中有两种类型的缓存:一级缓存和二级缓存。一级缓存默认是启用的。
● 数据库独立查询: HQL(Hibernate查询语言)是面向对象的SQL版本。 它生成数据库独立查询。 所以你不需要编写数据库特定的查询语句。 在Hibernate之前,如果项目更改了数据库,我们需要更改SQL查询,从而导致维护变得非常复杂。
● 自动创建表: Hibernate框架提供了自动创建数据库表的功能。 因此,无需手动在数据库中创建表。
● 简化复杂连接: 在hibernate框架中可轻松获取多个表中的数据。
● 提供查询统计和数据库状态: Hibernate支持查询缓存,并提供有关查询和数据库状态的统计信息。

Hibernate架构包括许多对象:会话工厂,事务工厂,连接工厂,会话,事务等。
hibernate架构中有4层:Java应用层,hibernate框架层,反手api层和数据库层。请参见hibernate架构图:

这是Hibernate的高级架构,具有映射文件和配置文件:

Hibernate框架使用许多对象会话工厂,会话,事务等以及现有的Java API,如JDBC(Java数据库连接),JTA(Java事务API)和JNDI(Java命名目录接口)。
Hibernate体系结构的要素
要创建第一个hibernate应用程序,我们必须知道Hibernate架构的元素。 它们如下:
● 会话工厂(SessionFactory):SessionFactory是ConnectionProvider的会话和客户端工厂。 它拥有数据的二级缓存(可选)。 org.hibernate.SessionFactory接口提供了工厂方法来获取Session的对象。SessionFactory创建非常昂贵,所以对于任何给定的数据库,应用程序应该只有一个关联SessionFactory。SessionFactory维护Hibernate在所有Session(例如第二级缓存,连接池,事务系统集成等)中使用的服务。
● 会话(Session):Session对象提供应用程序和存储在数据库中的数据之间的接口。 它是一个短生命周期的对象并包装JDBC连接。 它是事务,查询和标准的工厂。 它拥有一级缓存(强制性)数据。 org.hibernate.Session接口提供插入,更新和删除对象的方法。 它还提供了事务,查询和标准的工厂方法。
● 事务(Transaction):它是一个单线程、短生命周期的事务对象,用来来划分各个物理事务边界。 org.hibernate.Transaction接口提供事务管理的方法,它和JPA的EntityTransaction是等效的,并且都充当抽象API,以将应用程序与正在使用的底层事务系统(JDBC或JTA)隔离开来。
● 连接提供者(ConnectionProvider):它是一个JDBC连接工厂。 它从DriverManager或DataSource抽象出来的应用程序。 它是一个可选项。
● 事务工厂(TransactionFactory):它是一个事务工厂,是一个可选项。
Hieberate的获取
Hibernate的功能分为多个模块/工件以用于减少依赖(模块化)。我们主要了解下这些模块:
● hibernate-core:Hibernate主模块。定义其ORM功能和API以及各种集成SPI
● hibernate-envers:Hibernate的历史实体版本控制功能
● hibernate-spatial:Hibernate的空间/ GIS数据类型支持
hibernate-osgi
Hibernate支持在OSGi容器中运行
hibernate-c3p0
将C3P0连接池库集成到Hibernate中
hibernate-hikaricp
将HikariCP连接池集成到Hibernate中
hibernate-proxool
将Proxool 连接池库集成到Hibernate中
hibernate-jcache
将JCache缓存规范集成到Hibernate中,使任何兼容实现能够成为二级缓存提供者。
hibernate-ehcache
将Ehcache 缓存库作为二级缓存提供者集成到Hibernate中。
hibernate-infinispan
将 Infinispan 缓存库作为二级缓存提供者集成到Hibernate中。
下载Hieberate

Hibernate团队在SourceForge文件托管系统上发布版本,包括TGZ和ZIP格式。每个发行版包含JAR文件,文档,源代码和其他优点。
您可以从列表中https://sourceforge.net/projects/hibernate/files/hibernate-orm/下载您选择的格式的Hibernate发行版 。发行捆绑的结构如下:
● 该lib/required/目录包含hibernate-core jar及其所有依赖项。所有这些jar都需要在您的类路径中可用,无论使用Hibernate的哪些功能。
● 该lib/envers目录包含hibernate-envers的jar和所有依赖的(除了那些 lib/required/和lib/jpa/)。
● 该lib/spatial/目录包含hibernate-spatialjar及其所有依赖项(超出这些lib/required/)
● 该lib/osgi/目录包含了hibernate-osgi(以超出罐子和其所有相关的lib/required/和lib/jpa/)
● 该lib/jpa-metamodel-generator/目录包含生成Criteria API类型安全的元模型所需的jar。
● 该lib/optional/目录包含Hibernate提供的各种连接池和二级缓存集成所需的jar及其依赖关系

当然,如果我们使用mvn依赖的话,在pom.xml文件下直接添加依赖即可,从网站(https://mvnrepository.com/artifact/org.hibernate/hibernate-core)上查找你需要的即可。


参考:


网友评论

登录后评论
0/500
评论