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的关联关系映射主要包括多表的映射配置.数据 ...
随机推荐
- 用javascript编写一个简单的随机验证码程序
简单模拟网页的随机数字验证码,效果图如下: html代码: <div id="content"> <div class="left"> ...
- [译]Understanding ECMAScript6 函数
函数 函数是任何编程语言的重要组成部分,而自从JavaScript被引入以来,JavaScript的函数就未有太多改变.遗留下来的积压问题及微妙行为使我们很容易犯错误,或者需要更多的代码来实现一个非常 ...
- centos7安装文档
1.当载入安装镜像时,我们会看到如下图中的画面,我们选择第一项,安装centos7 2.选择英语(个人测试环境可以使用中文安装) 3.选择network&hostname配置网络 4.在配置网 ...
- 利用apache限制IP并发数和下载流量控制
一,为什么要对IP并发数,下载流量进行控制 说正题之前,先给大家讲个故事,那是在2007年,我进了一家公司,当时我们正在给达芙妮做电子商务网,www.idaphne.com.从三月份开始做的吧,九月份 ...
- LVDT
什么是 LVDT? LVDT 是线性可变差动变压器的缩写. 它是一种常见类型的机电传感器,可将其以机械方式耦合的物体的直线运动转换为对应的电气信号.LVDT 线性位移传感器随时可用,可以测量各种移动, ...
- Magento 0元订单 支付方式 -- Magento 0 Subtotal Payment Method
需求 现有购物网站支持2种支付方式,但是考虑到会出现如下情况: 在一个优惠活动中,假如有一些订单的总金额为0, 那么这些订单就不必跳转到支付网关,现有支付方式无法处理此种情况. 分析 当custome ...
- .Net Mvc 返回Json,动态生成EasyUI Tree
最近做一个项目,开始接触EasyUI,感觉很强大,很适合我这种对前台不是很感冒的人.在学习Tree的过程中,感觉网上的资料挺乱的,很多只是把EasyUI API 抄了一遍.现在把最近这段时间的学到的, ...
- 远程linux服务器mysql数据库定期备份和删除
网上已经有部分关于Linux下定期备份mysql的方法,但是很多步骤不够详细,不适合新手,自己琢磨了很久,终于搞定了. 1.Linux服务器一般是ssh协议,如果本地也是Linux环境,可以直接通过s ...
- UVa 12219 Common Subexpression Elimination (stl,模拟,实现)
一般来说,把一颗子树离散成一个int,把一个结点的字符离散成一个int会方便处理 直接map离散.当然一个结点最多只有4个小写字母,也可以直接编码成一个27进制的整数,舍掉0,为了区分0和0000. ...
- jni 修bug
1. ReferenceTable overflow (max=512) 内存泄露,程序运行一段时间就挂掉了. 在利用反射调用java中的函数需要释放掉查找到的类 void publishJava ...