Hibernate学习一

1.1. 什么是Hibernate

Hibernate轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架。

开源框架,属于jboss公司产品,时间久远。可以不写SQL就可以操作数据库。

 n 轻量级:使用方便(比Apache DbUtils 复杂很多倍)这个概念是个相对概念。(主要是对比EJB来说的,ejb是重量级的(内建组件很多,启动很慢,东西很多))

持久层: JavaEE分为表现层、业务层(service)、持久层(dao)

Struts2 是一个表现层框架

Hibernate 是一个持久层框架,底层就是封装了JDBC,也就说,HIbernate最终进入数据库执行的还是sql语句操作数据库--ssh

关系数据库: mysqloracle 都是关系型数据库(主流数据库)

最近 NOSQL 非关系型数据库开始流行(mongodbredis

ORM Object Relational Mapping对象关系映射(一种思想)

Mysql--关系型数据库

 

 

将数据表的关系,映射为类和对象之间关系:

数据库(关系型)

Java(面向对象的编程语言)

表的字段

类的属性

表的一行数据

类的一个实例对象

ORM好处: java程序员只需要在程序中操作对象,因为存在映射关系,自动生成SQL语句。不需要你写sql语句,就可以操作数据库。

允许你以面向对象的方式直接操作sql数据库。


Java中常见的ORM实现(持久层框架):

l JPAJava Persistence API.Sun公司的规范,JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范)

Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL(全自动)

l MyBatis  本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架(半自动)

其他的持久层框架(非ORM):Apache DBUtils Spring JDBCTemplate

 

【提示】

Jpa是一种规范,里面只有接口,Hibernate是它的一种实现,那么hibernate必然去实现了jpa中的接口

使用Jpa的一个好处是,可以更换实现而不必改动太多代码。Hibernate框架是基于JPA接口的实现,但又对其做了一些补充,因此,可以理解为Hibernate中有两套规范JPA和自己的,事实上只是补充)。

1.1. Hibernate的优缺点

优点:

n Hibernate完全是ORM自动生成sql语句,完全不需要懂sql极大简化jdbc的操作。

n 具有很强的反射和代理机制,生成代理对象,(可以代码增强)在数据获取可以进行延迟抓取、缓存的使用、达到优化的目的。

缺点:

n hibernate完全orm自动生成sql,所以很多企业用户对hibernate性能存在质疑(任何持久层框架都不如jdbc速度快,开发效率和性能的平衡)。在hibernate框架中,提供了很多优化手段。

Hibernate相关jar包说明

antlr-2.7.6.jar

一个语言转换工具,Hibernate利用它实现HQLSQL的转换

commons-collections-3.1.jar

Collections Apache的工具集,用来增强Java对集合的处理能力

dom4j-1.6.1.jar

Xml解析器

hibernate3.jar

核心包

hibernate-jpa-2.0-api-1.0.1.Final.jar

Jpa接口开发包

javassist-3.12.0.GA.jar

代理类生成工具包

jta-1.1.jar

标准的JAVA事务处理接口(跨数据库)

slf4j-api-1.6.1.jar

简单日志对象包

slf4j-log4j12-1.7.2.jar

连接包

log4j-1.2.16.jar

Log4j日志实现包

mysql-connector-java-5.0.8-bin.jar

mysql驱动包

1. Hibernate核心API

1.1. 概述

通过该体系结构图,可以看到Hibernate的核心API接口,它们之间的关系:

Hibernate通过Configuration来读取核心配置文件,SessionFactory缓存配置并用来提供Session,而Session是用来操作PO的,让Hibernate生成crudsql语句,在操作过程中使用Transaction来管理事务。QueryCriteriaHibernate提供的查询的两种不同方式。

下面详解:

1.1. Query查询接口

作用:Query对象主要用于执行查询操作。

Query接口用于接收HQL语句执行查询。

HQLHibernate Query Language缩写,语法很SQL语法,但是完全面向对象的。

Hibernate为照顾和兼容原生的SQLHibernate提供了Query的子接口SqlQuery来执行SQL语句,用法和query接口的一样。

Hibernate核心API

n Configuration核心配置对象,用来加载Hibernate配置文件,用来创建会话工厂

n SessionFactory 会话工厂,用来创建Hibernate会话Session,缓存了一些配置。(连接池等)

Session 会话,相当于一个数据库连接(持久了一个connection),进行数据库表CRUD操作,它是hibernate的运作核心。

n Transaction 事务,对操作进行事务管理

n Query查询接口,接收HQL语句,子接口SQLQuery接受sql语句

n Criteria条件查询(QBCquery by Criteria,完全面向对象方式进行多条件的组合查询,无需关心sql的写法。


猜你喜欢

转载自blog.csdn.net/qq_30764991/article/details/80486966
今日推荐