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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值