Hibernate学习笔记
Posted 準提童子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate学习笔记相关的知识,希望对你有一定的参考价值。
本文是根据Hibernate官网提供的User Guide(5.2)文档学习而成。同时锻炼总结归纳的能力。
Why?
在面向对象的软件开发过程中,从关系型数据库中处理数据是比较繁琐的(JDBC:加载驱动,建立连接,执行sql语句等),这是由于存储数据的对象Object与关系型数据库Relational databases之间的不协调导致的。Hiberante就是ORM (Object/Relational Mapping)解决方案,ORM就是指从以对象模型到以关系型数据模型描述数据之间的映射技术。
学习Hbernate需要一定的SQL基础,有助于深入理解该技术。
What?
Hibernate提供了从JAVA类到数据库表、JAVA数据类型到SQL数据类型之间的映射,同时具备数据查询、检索等能力,通过消除手工配置JDBC、使用SQL的方式,可以帮助开发人员降低95%的数据持久化编程任务。Hibernate同时保留了用户使用SQL语句的能力。Hibernate还可以尽量压缩不同数据库厂商的SQL语句问题。
1. 架构Architecture
Hibernate作为ORM解决方案,位于Java应用层数据访问层和关系数据库之间,Java应用通过使用Hibernate API加载,查询数据等,下边简单介绍下Hibernate API。
Hibernate API实现了JAVA Persistence API(JPA)规范,JPA接口和Hibernate的实现之间的关系如图:
SessionFactory:
线程安全的,生产Session实例的工厂;EntityManagerFactory是与SessionFactory相等级别的JPA,这两个接口都实现在SessionFactoryImpl实现类中。
创建SessionFactory是非常昂贵的,对于任何数据库,应用程序应该仅只有一个相关的SessionFactory。SessionFactory也保持HIbernate使用的服务,如秒级别缓存,连接池,事务系统集成等。
Session:
单线程,短生命周期的对象,类似于“工作单元”(Unit of Work)的概念,在JPA术语中,一个Session被一个EntityManager代表。在这个背景之后,Hibernate的Session包含了JDBC的Connection,同时扮演了Transaction工厂的角色。其保持了应用域模型的“可重复读”持久化上下文。
Transaction:
单线程,短生命周期的对象,应用程序通过它划分单个的物理事务边界,EntityTransaction是同等的JPA,这两个接口都作为抽象API,使用JDBC或JTA(Java Transaction API)从底层的事务系统中隔离应用。
2. 域模型Domain Model
以上是关于Hibernate学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记76:Hibernate学习之路---Hibernate介绍,hibernate 环境的搭建