对Hibernate的理解

1.
面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。

   
 2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。

   
 3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object
Relation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。

   
 4.使用Hibernate的基本流程是:配置Configuration对象、产生SessionFactory、创建session对象,启动事务,完成CRUD操作,提交事务,关闭session。

   
 5.使用Hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件。

   
 6.在应用Hibernate时,重点要了解Session的缓存原理,级联,延迟加载和hql查询。

对Hibernate的理解

时间: 2024-11-06 00:51:36

对Hibernate的理解的相关文章

谈谈你对Hibernate的理解

答: 1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象.建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化. 2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息.从Java程序的运行功能上来讲,保存对

hibernate FetchType理解

JPA定义实体之间的关系有如下几种: @OneToOne @ManyToOne @OneToMany @ManyToMany 在定义它们的时候可以通过fetch属性指定加载方式,有两个值: FetchType.LAZY:延迟加载 FetchType.EAGER:急加载 急加载就好理解了,在加载一个实体的时候,其中定义是急加载的的属性(property)和字段(field)会立即从数据库中加载 开发过程中遇到问题最多的就是延迟加载,并且问题都是一个: “为什么我定义为延迟加载了,但没起作用,相关的

hibernate知识点理解

1.只有业务逻辑层出现的问题? 1.切换数据库麻烦 2.sql编写起来麻烦 3.我们的程序员不需要关注数据库,只希望关心业务本身 2.hibernate的好处 1.程序员只关心业务逻辑,使角色更加清楚 2.分层更清楚 3.通用修改更强,适合数据库平台的切换 4.对象化,数据库关系变成java对象关系,更加方便操作 5.性能保证,hiernate可能按照不同的数据库操作,但是会最优sql语句 6.增加程序的鲁棒性. 3.hibernate开放的三种方式 1.有Domain object >> m

Hibernate flush理解

问题:在没有事务的情况下,通过hibernate的session.save(entity),无法将数据持久化至数据库中,即使强制刷新后(flush())后也同样如此. 原因:对于增删改操作,必须commit后才能持久化至数据库.若不commit,只有在同一个连接中才能看到最新的更改,对其他连接不可见. Hibernate的flush: 执行时会清除session缓存并向数据库发送SQL语句并执行,但此时如果数据库当前存在一个事务,数据库会先将这些SQL语句缓存起来,那么此时在数据库中是无法看到S

面试题:谈谈你对hibernate的理解

说说这类问题一般要和一个东西比較.说说他们的长处和缺点,hibernate就和JDBC比較呗.你就说说JDBC的优缺点.然后说说hibernate的优缺点,最后对照得出hibernate更好. hibernate: 1.概念:ormapping    对象关系映射 1.操作数据库的框架 底层是通过jdbc操作数据库的 2.用面向对象的方式操作数据库 2.jdbc的缺点 1.代码太繁琐了 2.不是面向对象的数据库操作 3.资源关闭的代码也非常繁琐,每次都得打开.关闭 4.没有做到数据缓存 5.移植

hibernate 深入理解持久化对象

hibernate 完全采用面向对象的方式来操作数据库,因此开发者眼里只有对象.属性,无须理会数据库.表.列等概念. 持久化类的要求 Hibernate 采用低侵入式设计,所以对持久化类的要求也是只要是简单的pojo即可. 虽然hibernate对持久化没什么要求,但应遵守如下规则: -提供一个无参的构造器,这样hibernate就可以使用Constructor.newInstance()来创建持久化实例了. -提供 一个标识属性,通常是映射数据库的主键字段 -对象的属性应尽量避免使用最基本的类

hibernate的理解

1.注解 @TypeDefs:引入枚举类型

Hibernate之API初识及增删改查实现

声明:关于hibernate的学习.非常大一部分东西都是概念性的. 大家最好手里都有一份学习资料,在我的博文中.我不会把书本上的概念一类的东西搬过来.那没有不论什么意义.关于hibernate的学习,我主要是通过演示项目让大家加深一些概念的理解,同一时候,也是为了让大家深层次的理解hibernate.而不仅仅是单纯的停留在概念上,假设仅仅是单纯的理解一些概念性的东西.到最后你们肯定会一无所获.并且过段时间就会忘记.所以以后的hibernate的学习.希望大家多看下演示项目.下载下来部署上演示看看

hibernate中的dialect解释

dialect就是“方言”,因为hibernate是要把Java对象转换成关系数据库来描述的,而关系数据库虽然有一些统一的标准,如SQL-92等,但是实际上各数据库如Oracle, MySQL, MS SQL Server等等为了提高性能或增加功能都提供了一些额外的标准或语法,因此,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect.你可以看到hibernate里面实际上方言只是一个类,它里面将不同数据类型.SQL语法转换成hibernate能理解的统一的