Hibernate 框架理解
Hibernate框架简化了java应用程序与数据库交互的开发。Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。
ORM工具简化浏览数据的创建,数据处理和数据访问。它是将对象映射到数据库中存储的数据(表)的编程技术。
ORM工具内部使用JDBC API与数据库进行交互。
Hibernate框架的优点:
- 开源和轻量级:Hibernate看见是根据LGPL许可证和轻量级的开源工具。
- 快速性能:Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用。Hibernate框架中有两种类型的缓存:一级缓存和二级缓存。一级缓存默认是启用的。
- 数据库独立查询:HQL(Hibernate查询语言)是面向对象的SQL版本。它生成数据库独立查询。所以不需要编写数据库特定的查询语句。在 Hibernate之前,如果项目修改了数据库,需要更改SQL查询,从而导致维护变得复杂。
- 自动创建表:Hibernate框架提供了自动创建数据库表的功能。因此,无需手动在数据库中创建表。
- 简化复杂连接:在Hibernate框架中可轻松获取多个表中的数据。
- 提供查询统计和数据库状态:Hibernate支持查询缓存,并提供有关查询和数据库状态的统计信息。
Hibernate架构包括许多对象持久对象,会话工厂、事物工厂、连接工厂、会话事务等。Hibernate架构中可分为4层Java应用层、hibernate框架层、反手api层和数据库层
Application ------Presistent Object -----HIBERNATE Mapping File、Configuration File --Database
Presistent Object部分包括:SessionFactory、Session、Transaction Factory、Transaction、Connection Provider。
Hibernate框架可以使用许多对象会话工厂,会话、事务等以及现有的Java API,如JDBC(Java数据库连接)、JTA(Java事务API)和JNDI(Java命名目录接口)。
要创建一个hibernate应用程序,需要知道Hibernate架构的元素。
会话工厂(SessionFactory)
SessionFactory是ConnectionProvider的会话和客户端工厂。它拥有数据的二级缓存(可选)。org.hibernate.SessionFactory接口提供了工厂方法来获取Session的对象。
会话(Session)
Session对象提供应用程序和存储在数据库中的数据之间的接口。它是一个短生命周期的对象并包装JDBC连接。它是事务、查询和标准的工厂。它还提供了事务、查询和标准的工厂方法。
事务(Transaction)
事务对象指定工作的原子单位,它是一个可选项。org.hibernate.Transaction接口提供事务管理的方法。
连接提供者(ConnectionProvider)
它是一个JDBC连接工厂。它从DriverManager或DataSource抽象出来的应用程序。是一个可选事项。
事务工厂(TransactionFactory),是一个可选项。
另外,可以使用注释创建hibernate应用程序。有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等。Hibernate注释基于JPA2规范。并支持所有功能。所有的JPA注释都在javax.persistence.*包中定义。Hibernate EntityManager实现由JPA规范定义的接口和生命周期。使用hibernate注释的优势是不需要创建映射(*.hbm.xml)文件直接创建对象关联。
@Entity注释将类标记为实体,放在类名上。
@Table注释指定要关联此实体类的数据库的表名。放在类名上,格式@Table(name="表名")
如果不使用@Table注释,hibernate将使用类名作为表名称。默认情况。
@Id注释标记实体的标识符。
@Column注释指定此属性或字段的列的详细情况。如果位指定@Column注释,则属性名称将用作列名,默认情况下。
Hibernate 框架理解的更多相关文章
- Java ssh 框架 hibernate 详细理解
Hibernate框架技术相信对大多数的 java 程序员并不陌生,数据表之间的关系如何通过Hibernate来建立,需要我们认真的分析数据表中数据项之间的交互: 数据库表的之间的关系有: (1)一对 ...
- 对Hibernate的理解
---恢复内容开始--- 一.面向对象设计的软件内部运行过程可以理解成就是不断创建各种新对象,建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程.不管程序运行的过程和操作怎么样,本 ...
- Hibernate框架—简介
ORM对象/关系数据库映射 ORM全称Object/Relation Mapping,对象/关系数据库映射,可以理解成一种规范.该框架的基本特征:完成面向对象的编程语言到关系数据库之间的映射. ORM ...
- 项目总结SpringMVC+hibernate框架 web.xml 分析(2)
紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...
- Hibernate框架入门
导读 本文主要介绍hibernate的入门,主要包括以下内容:hibernate介绍.hibernate环境搭建.hibernate简单测试.测试涉及的api详解. 一.hibernate介绍 JDB ...
- Hibernate框架进阶(上篇)
导读 前面一片文章介绍了Hibernate框架的入门,主要是讲解Hibernate的环境搭建和简单测试,有兴趣的童鞋出门左转.本文在入门的基础上进行Hibernate的进阶讲解,分为上中下三篇,本篇为 ...
- hibernate框架学习笔记6:事务
MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...
- [ SSH框架 ] Hibernate框架学习之二
一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...
- [ SSH框架 ] Hibernate框架学习之三
一.表关系的分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置.数据 ...
随机推荐
- getAnnotation为null的坑
在写一个基于SpringAOP的权限控制的. 自己定义了一个注解,然后逻辑代码需要通过获取自定义注解的一个属性来进行权限控制. 下面简单上一下关键代码: 自定义注解: @Documented //有关 ...
- 语义分割丨DeepLab系列总结「v1、v2、v3、v3+」
花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅. DeepLabv1 Semantic image segmen ...
- visio双屏幕打开
开始以为visio2010好像不可以 但我以前用的visio2007貌似可以 但 不想换回去了 适应了就好 后来找到大牛级认为 解决了 如下:我用的2010,按照下面修改绝对可以.1. 打开Visio ...
- 公司开发部门GIT与SVN 之争
公司最开始决定是使用GIT作为版本控制 , 也都使用了4,5个月了 , 开发人员也都是20多岁年轻力壮的年轻人 , 每个组的组长也一直在做git使用的培训 , 即使是这样 , 还是遇到了非常大的阻碍 ...
- Todolist总结
一.组件类里面的函数尽可能写成箭头函数的形式,方便绑定this 上面的箭头函数是好的,写面的不好,他需要在用的时候绑定this,或者在constructor绑定,如下: 如上用的时候绑定this是不好 ...
- 【读书笔记】构建之法(CH1~CH3)
人类文明的发展离不开哲学家的思考.科学家的发现和工程师的构建.三个简单的方程式解释了什么是现代软件工程: 1.程序=算法+数据结构 2.软件=程序+软件工程 3.软件企业=软件+商业模式 软件开发的不 ...
- iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译
编号 iOS-Apple苹果官方文档翻译名称 博文链接地址 1 苹果API常用英语名词---iOS-Apple苹果官方文档翻译 http://www.cnblogs.com/ChenYilong/p/ ...
- ASP.NET MVC执行流程图
- config文件声明非系统节点的方法
有一些自定义节点如果不声明会报出无法识别的节点 XXX 这时候要声明该节点 写法如下 <configSections> <!--声明一个节点组--> <sectionGr ...
- 爬虫4_python2
import urllib2 response = urllib2.urlopen("https://www.baidu.com") print response.read() 构 ...