传智播客Hibernate(精)

合集下载

传智播客学习

传智播客学习

1.“The content of element type "package" must match"(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-r ef?,global-results?,global-exception-mappings?,action*)". ”刚看到这个错误我就想,哪个也没写错呀。

仔细对了好几遍也没发现哪个属性写错了。

最后Google了一下,看了别人写的文章豁然开朗了。

这个错误的意思是,package里元素必须按照一定的顺序排列。

这个顺序就是result-typesinterceptorsdefault-interceptor-refdefault-action-refdefault-class-refglobal-resultsglobal-exception-mappingsaction*(就是所有的action放到最后)主键约定都用long2.搭建环境3.Hibernate中的jpa是避免类找不到异常的出现mons-codec,commons-lang跟编码相关,stringutils是专门操作字符串的,digestUtil专门操作数字DigestUtils.md5Hex("123");5.jar包冲突表现在高低版本上6.opentype对话框找方言ctrl+shift+T7.preference中xml catalog中配置XSD文件形成备用库,之后在xml文件当中选择自己所需的帮助xsd(xsd是约束文件)8.9.Struts2可以配置的属性都在default中10.提示功能的设置11.Log4j的作用12. @Transactionalpublic void save() {}自动在方法是用之前打开事务,方法执行完提交事务,出现异常回滚事务如果在类上面加@Transactional,则其中的每一个方法都启用事务13public interface RoleDao<T> extends BaseDao<T>类或接口继承泛型,其名称后面一定也要加泛型<T>,因为如果不加你还是没有继承下来属于自己的泛型第二天1.实体设计1.1有几个实体1.2实体之间有无关系,有什么关系1.3每个实体有什么属性(代理主键即是自然主键)1.3.1主键、关联关系属性(连接它的线有几个端就有几个关联关系属性、一般属性(从列表或表单显示出来的,要看所有表单属性),特殊属性(为解决某问题而设计的,如显示的是年龄,实际是生日,通过计算的出来)Users:set<user>2.分析并完成一组功能3.测试实体设计过程<!-- users属性,我与User的多对多 --><set name="users"table="itcast_user_role"inverse="true"> <key column="roleId"></key><many-to-many class="User"column="userId"/>4.</set><!-- roles属性,我与Role的多对多 --><set name="roles"table="itcast_user_role"inverse="false"> <key column="userId"></key><many-to-many class="Role"column="roleId"/>5.</set><!-- parent属性,我与Department(上级)的多对一 --><many-to-one name="parent"class="Department"column="parentId"></many-to-one><!-- children属性,我与Department(下级)的一对多 --><set name="children"><key column="parentId"></key><one-to-many class="Department"/>6.</set>7.<!-- lastTopic属性,我与Topic的一对一8.基于外键的一对一的映射9.-->10.<many-to-one name="lastTopic" class="Topic" column="lastTopicId"unique="true"></many-to-one>11.映射过程:写注释。

hibernet的原理

hibernet的原理

hibernet的原理Hibernate的原理简介Hibernate是一个开源的对象关系映射(ORM)框架,用于将Java应用程序中的对象与关系型数据库之间进行映射。

它可以大大简化数据库操作,并提供了高度的灵活性和可维护性。

ORM的基本概念•对象关系映射(ORM):将关系数据库中的表和对象之间的映射关系定义在一个配置文件中,使得Java中的对象可以直接操作数据库,无需编写复杂的SQL查询语句。

•持久化:将对象保存在数据库中,以便随时从数据库中获取对象。

•对象关系映射文件(ORM文件):包含了实体类和数据库表之间的映射关系。

•实体类:表示Java应用程序中的一个实体,通常与数据库表中的一行数据对应。

Hibernate的工作原理1.配置文件–创建``配置文件,包含了数据库连接信息、实体类与数据库表之间的映射关系等。

2.实体类–创建实体类,为类添加注解或使用XML文件,用于定义实体类与数据库表之间的映射关系。

3.SessionFactory–在应用程序启动时,使用配置文件和实体类来创建SessionFactory对象。

SessionFactory是线程安全的,通常一个应用只需要一个SessionFactory实例。

4.Session–在应用程序运行过程中,通过()方法创建Session对象。

–Session代表了与数据库的一次会话,可用于执行数据库操作,如增删改查等。

–Session具有缓存机制,它会缓存从数据库检索到的实体对象,以提高性能。

5.事务管理–Hibernate使用事务来管理数据库操作,保证数据的一致性。

–开启事务:();–提交事务:();–回滚事务:();6.对象操作–使用Session对象操作数据库,如保存对象、更新对象、删除对象等。

–查询操作:使用HQL(Hibernate Query Language)或Criteria API进行查询,它们提供了更高级的查询功能。

7.数据库操作–Hibernate会根据实体类和数据库表之间的映射关系,自动生成对应的SQL语句并执行。

06 Hibernate一级缓存

06 Hibernate一级缓存
—高级软件人才实作培训专家 !
Hibernate一级缓存
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate缓存


缓存是存储数据的临时空间,减少从数据库中查询 数据的次数 Hibernate中提供有两种缓存机制
一级缓存(Hibernate自身携带) 二级缓存(使用外部技术)
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate操作一级缓存

刷新一级缓存
s.flush();

清除一级缓存
s.clear();

清除一级缓存中指定对象
s.evict(obj);

按照OID重新加载一级缓存中的PO(使用数据库中数 据覆盖一级缓存数据及快照数据)
s.refresh(obj);
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate一级缓存刷新时机(了解)


所谓Hibernate一级缓存刷新时机指一级缓存中存在的 修改数据何时会被同步到数据库表中 刷新时机有四种(FlushModel常量)
ALWAYS:任意操作导致刷新(效率过低) AUTO:根据操作功能区别是否刷新(默认) COMMIT:提交事务时刷新 MANUAL:手动执行刷新时进行刷新(提交事务不会触发)
进行属性更新,只会产生一条update语句,此时PO状态的改 变会在缓存进行刷新时才完成最终操作,除非提前刷新缓存 PO属性的更新无需调用update操作,缓存刷新时自动完成
北京传智播客教育
—高级软件人才实作培训专家 ! update操作的注意事项(2)

update将DO→PO操作会强制完成一次更新操作, 无论数据是否发生变化,此时可根据业务需要选择

传智播客hibernate教程

传智播客hibernate教程

北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
基本概念和CURD
Java代码 代码 1.初始化代码 只做一次 初始化代码(只做一次 初始化代码 只做一次)
Configuration cfg = new Configuration(); cfg.configure(“config.cfg.xml”); 也可以通过cfg.setProperty设置属性。 SessionFactory sessionFactory = cfg.buildSessionFactory();
Criteria
Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式: Criteria crit = session.createCriteria(DomainClass.class); 简单属性条件如:criteria.add(Restrictions.eq(propertyName, value)), criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
关联映射
多对一(Employee - Department) 一对多(Department-Employee) 一对一(room - door) 多对多(teacher - student) 组件映射(User-Name) 集合映射(set, list, map, bag) inverse和cascade(Employee – Department)
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!

传智播客-jpa与hibernate(1)-实体和主键生成-那一抹云-CSDN博客

传智播客-jpa与hibernate(1)-实体和主键生成-那一抹云-CSDN博客

传智播客-jpa与hibernate(1)-实体和主键生成-那一抹云-CSDN博客传智播客-jpa与hibernate(1)-实体和主键生成收藏jpa全称是Java Persistence API,是sun公司出台的面向数据持久化层的规范,即面向接口编程,以达到“平台”无关性(这个“平台”是指jpa产品,例如hibernate,toplink,openjpa等)。

hibernate是符合jpa规范的产品之一。

说到数据持久化,先说一下以下几点:1、对于数据持久化的思想而言,内存只是一个交换数据的地方,这意味着如果断电或者进程被杀,数据就会丢失。

2、为了防止数据丢失,所以需要将数据保存到外层(硬盘,U盘或其他存储设备等)。

3、能够实现数据持久化保存的技术就称之为数据持久化。

除了jpa,还有jdbc、io等都是。

4、应用系统里的数据持久化层是从业务逻辑层分离出来的。

关于实体:1、在jpa规范里,被托管的对象都是实体,但是是用实体名来区分实体的,如果没有显示声明,默认的实体名即不包含全路径的类名,所以如果不同包下有相同类名,应该显示声明实体名予以区分,例如@Entity(name="XXX")。

2、在jpa规范出来前,hibernate等数据持久化层技术产品早已大行其道,鱼龙混杂,jpa的出现可以说对这个市场进行了规范。

hibernate在 jpa出来前是用配置文件注册托管实体的(还有一些辅助工具帮助实现实体和表模式的相互转换,可以参见《深入浅出Hibernate》),但是jpa只支持注解方式(jpa支持配置文件方式,只是很少有人这么用,就当它没有吧。

)。

所以hibernate有两种方式注册托管实体:xml配置文件和注解。

3、如果用的jpa产品是hibernate,则在persistence.xml配置文件中不用注册实体类名也能被hibernate识别,因为hibernate有扫描机制,但是其它jpa产品不一定有,所以为了提高程序的可移植性,还是在文件中加上比较好,而且这样写也比较规范。

传智播客Hibernate课件

传智播客Hibernate课件

北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
9.通过id查询客户信息
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
10. 查询所有的客户信息
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
}
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
3 创建对象-关系映射文件 Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句 映射文件的扩展名为 .hbm.xml 这里Customer.hbm.xml文件
date
timestamp
BIRTHDAY
REGISTERED_TI ME
DATE
TIMESTAMP
汉语(java)
英语(hibernate)
北京传智播客教育
日语(sql)
—高级软件人才实作培训专家 ! Hibernate入门
北京传智播客教育
2 创建表和对应的javaBean文件(持久化类)
create table customer ( id int primary key, name varchar(12), age int, des text ) public class Customer { private private private private Integer id; String name; Integer age; String des;
char
boolean ng.String byte[]
character

传智播客Hibernate

传智播客Hibernate
北京传智播客教育
—高级软件人才实作培训专家! Java对象持久化概述

软件模型
• 域模型:在软件的分析阶段创建概念模型,在
软件设计阶段创建域模型。 组成部分: 1.具有状态和行为的域对象。 2.域对象之间的关联。
北京传智播客教育
—高级软件人才实作培训专家! Java对象持久化概述
Hibernate API Hibernate配置文件
对象关系型映射
关系数据库
Customers表
北京传智播客教育
—高级软件人才实作培训专家! Hibernate入门

创建配置文件
hibernate.dialect=net.sf.hibernate.dialect.OracleDialect hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver hibernate.connection.url=jdbc:oracle:thin:peopres/peopres@127.0.0.1: 1521:oracle9 ername=peopres hibernate.connection.password=peopres hibernate.show_sql=true
北京传智播客教育
—高级软件人才实作培训专家! Hibernate入门

Hibernate初始化

访问Session接口
save() update() delete() load() find()
北京传智播客教育
—高级软件人才实作培训专家! Hibernate入门
—高级软件人才实作培训专家! Java对象持久化概述

应用程序的分层体系结构

传智播客-jpa与hibernate(3)-继承映射-那一抹云-CSDN博客

传智播客-jpa与hibernate(3)-继承映射-那一抹云-CSDN博客

传智播客-jpa与hibernate(3)-继承映射-那一抹云-CSDN博客传智播客-jpa与hibernate(3)-继承映射收藏Hibernate支持三种基本的继承映射策略:每个类分层结构一张表(table per class hierarchy),每个子类一张表(table per subclass),每个具体类一张表(table per concrete class),此外,Hibernate还支持第四种稍有不同的多态映射策略--隐式多态(implicit polymorphism) 。

这里只介绍前三种,最后一种请参阅相关文档。

代码示例为注解方式,配置方式请参阅文档。

每个类分层结构一张表(table per class hierarchy)也称单表策略,就是一棵继承树映射为一张表,或者说将一棵继承树里所有类的信息不重复地放到一张表里。

因为所有的父子类都在一张表里体现,所以还需要一个额外的字段以区分每条记录代表的具体的类别。

举例来说,有父类Employee(雇员),子类HE(钟点工),同级子类SE(正式员工);HE和SE的区别在于薪资,HE以时效计,字段为rate,SE以月薪计,字段为salary;还有一个字段etype作为具体类别信息的区分标识。

很明显,rate和salary是互斥的。

所以这两个字段应当允许为空,而且实际操作的时候必然会有一个字段列的冗余。

etype对于每个类别信息自身而言,也可以视为是一个冗余字段。

所以这个策略一般在父类的属性字段占总字段的权重大的时候较为适用。

示例代码:@Entity@Table(name="jpa_inherit_single_ess")@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name="etype",discriminatorType=D iscriminatorType.STRING)@DiscriminatorValue(value="ee")public class Employee {...}@Entity@DiscriminatorValue(value="he")public class HE extends Employee {...}@Entity@DiscriminatorValue(value="se")public class SE extends Employee {...}NOTE: 查询的时候不是用entityManager.find(XXX.class, serialable)。

hibernate笔记

hibernate笔记

步步为营Hibernate全攻略(一)构建Hibernate框架环境任何一项新技术的出现都有它的必然性,Hibernate也不例外,所以在掌握Hibernate的具体应用之前我们一定先要了解Hibernate是什么?使用Hibernate会给我们的程序开发带来哪些好处?使用Hibernate的好处简单来讲体现在以下几个方面:1. Hibernate说白了就是对持久层进行的封装,它简化了对数据库的操作,使得我们可以以对象方式直接访问数据库中的数据。

实现了完全的OO思想。

2. 另外由于Hibernate对JDBC的彻底封装,使得我们可以不用在程序中写传统的sql语句便能实现对数据库的各种操作,极大的提高了生产力。

3. Hibernate支持MySQL,SQL Server等多种数据库。

Hibernate提供了多种数据库的接口,只要更改配置信息可以实现对不同数据库的操作,换句话说也就是你可以轻视的实现数据库更换。

说了这么多Hibernate的好处,那Hibernate到底该怎样用呢?别急下面我们就来看看Hibernate环境是如何搭建起来的。

1. 建立Java项目(也可以是java web项目)。

2. 导入相关jar包。

导入jar包的方式可以有两种。

第一种是直接添加外部jar包,也就是我们的“Add External JARs”。

另外一种是先建立自己的jar包库,然后向新建的库中加入jar包,如果使用这种方式最后一定不要忘记将建好的库引入到项目中。

两种方式均可,但一般更推荐第二种方式。

加入的jar包主要有以下这些:2.1在Hibernate_Home/lib/路径下的所有jar包。

2.2加入Hibernate核心jar包:hibernate3.jar。

2.3加入所使用的数据库的JDBC驱动包。

使用MySQL数据库则加入MySQL数据库驱动mysql-connector-java-3.1.13-bin.jar。

传智播客网上书城系统设计

传智播客网上书城系统设计

毕业设计(论文)传智播客网上书城系统设计摘要随着科学技术的发展,网络在人们生活中的应用越来越广泛。

人们越来越想在最短的时间内购买到自己所需的图书。

但书目的繁多,给人们在繁忙的工作生活中的购书带来了很大的麻烦,于是网上购书便成了人们向往的事情。

图书销售系统的开发为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买到自己想要的书,既省时又省力。

有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。

它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等特点。

系统以JSP为主要制作工具,实现了用户注册、登陆、验证身份及书籍的预览查询、对书籍的购买通过购物车实现等功能。

关键词传智播客电子商务网上书城管理信息系统目录中文摘要 (3)英文摘要 (4)目录 (5)第一章绪论 (7)1.1课题背景、目的及意义 (7)1.1.1课题背景 (7)1.1.2课题目的和意义 (7)1.2国内外研究现状 (7)1.2.1 国外的研究现状 (7)1.2.2 国内的研究现状 (8)第二章可行性分析 (8)2.1社会可行性 (8)2.2技术可行性 (8)2.3操作可行性 (8)2.4系统的技术介绍 (9)2.4.2 JQuery (9)2.4.3 MySQL (9)2.4.4 MVC (9)2.4.5 JDBC (10)2.4.6 DBUtils (10)2.4.7 C3P0 (11)2.5系统开发平台及运行环境 (11)2.5.1 系统开发平台 (11)2.5.2 运行环境 (11)第三章需求分析 (11)3.1系统功能模块概述和分析 (11)3.2系统功能模块设计 (12)3.3数据库分析 (13)第四章传智播客网上图书商城前台设计与实现 (17)4.1首页设计 (17)4.2用户模块 (18)4.2.1用户注册 (18)4.2.2用户登录 (19)4.2.3修改当前用户密码 (20)4.2.4退出 (21)4.3图书模块 (21)4.3.1图书列表 (21)4.3.2图书详细 (21)4.3.3高级搜索 (22)4.4购物车 (22)4.4.1添加图书到购物车 (22)4.4.2我的购物车 (23)4.4.3修改条目数量 (23)4.4.4删除条目 (23)4.5订单模块 (23)4.5.1选中条目,准备生成订单 (23)4.5.2生成订单 (24)4.5.3订单列表 (24)4.5.4支付页面 (25)4.5.5订单详细页面 (25)4.5.6订单状态 (26)第五章传智播客网上图书商后台设计与实现 (26)5.1管理员登录 (26)5.2后台主页 (27)5.3分类管理 (27)5.3.1.分类列表 (27)5.3.3.修改分类 (29)5.3.4.删除分类............................................................................................ 错误!未定义书签。

hibernate常用方法

hibernate常用方法

hibernate常用方法Hibernate是一个开源的对象-关系映射框架,用于简化Java应用程序与数据库之间的交互。

Hibernate提供了丰富的API来执行通用的数据库操作,包括插入、更新、删除和查询。

下面是Hibernate常用的方法:1. save(:将一个新的对象插入到数据库中,返回一个唯一标识符。

2. update(:更新数据库中的一个对象。

3. delete(:从数据库中删除一个对象。

4. get(:根据给定的唯一标识符查询数据库中的一个对象。

5. load(:根据给定的唯一标识符查询数据库中的一个对象并加载它。

6. saveOrUpdate(:根据对象的状态来决定是插入还是更新数据库中的对象。

7. merge(:将给定对象的状态合并到数据库中的对象。

8. persist(:将一个新的对象插入到数据库中,并立即执行同步。

9. lock(:锁定一个对象,防止其他会话对其进行修改。

10. clear(:清除会话缓存中的所有对象。

11. evict(:从会话缓存中移除给定的对象。

12. refresh(:强制会话重新从数据库中加载对象的状态。

13. flush(:将会话缓存中的所有操作发送到数据库中。

14. Criteria API:用于创建复杂的查询条件。

15. HQL(Hibernate Query Language):类似于SQL的查询语言,用于查询对象。

16. Native SQL:直接执行SQL语句来操作数据库。

17. Transaction API:用于管理事务的开始、提交和回滚。

18. Session API:用于管理Hibernate会话的生命周期。

19. SessionFactory API:用于创建和销毁Hibernate会话工厂。

20. Dialect API:用于不同数据库间的差异性处理。

这些方法涵盖了Hibernate的核心功能,开发者可以根据具体的需求选择合适的方法来操作数据库。

Hibernate的工作原理

Hibernate的工作原理

Hibernate的工作原理Hibernate是一个流行的Java持久化框架,它的工作原理是通过对象关系映射(ORM)将Java对象映射到关系数据库中。

本文将详细介绍Hibernate的工作原理,包括其引言概述和正文内容。

正文内容分为五个部分,分别是:Hibernate的概述、SessionFactory的创建、Session的管理、持久化操作和查询、事务管理。

引言概述:Hibernate是一个开源的对象关系映射框架,它简化了Java应用程序与关系数据库之间的交互。

通过Hibernate,开发人员可以使用面向对象的方式进行数据库操作,而不必直接编写SQL语句。

Hibernate的工作原理是将Java对象映射到数据库表中,使得开发人员可以更加专注于业务逻辑的实现,而不必关心底层的数据库操作细节。

一、Hibernate的概述:1.1 Hibernate的核心组件:Hibernate由多个核心组件组成,包括SessionFactory、Session、Transaction等。

SessionFactory是Hibernate的核心接口,用于创建Session 对象。

Session是Hibernate与数据库交互的主要接口,开发人员通过Session进行数据的增删改查等操作。

Transaction用于管理事务的提交和回滚。

1.2 Hibernate的配置文件:Hibernate的配置文件是一个XML文件,用于配置Hibernate的各种属性和参数。

配置文件中包含数据库连接信息、映射文件的路径、缓存配置等。

通过配置文件,Hibernate可以正确地连接到数据库,并根据映射文件将Java对象映射到数据库表中。

1.3 Hibernate的映射文件:映射文件是Hibernate的另一个重要组成部分,它用于定义Java对象与数据库表之间的映射关系。

映射文件中包含了Java对象的属性与数据库表的字段之间的映射关系,以及对象之间的关联关系。

hibernate 生成数据库表的原理

hibernate 生成数据库表的原理

hibernate 生成数据库表的原理Hibernate是一个Java持久化框架,它提供了一种方便的方式来映射Java对象到关系数据库中的表结构。

当使用Hibernate时,它可以根据预定义的映射文件或注解配置自动创建、更新和管理数据库表。

Hibernate生成数据库表的原理如下:1. 对象关系映射(Object-Relational Mapping,ORM):Hibernate使用ORM技术将Java类和关系数据库表之间建立起映射关系。

通过在实体类中定义注解或XML映射文件,Hibernate可以知道哪个Java类对应哪个数据库表以及类中的属性与表中的列之间的映射关系。

2. 元数据分析:当应用程序启动时,Hibernate会对实体类进行元数据分析。

它会扫描实体类中的注解或XML映射文件,获取实体类的名称、属性名、属性类型等信息,并根据这些信息生成相应的元数据。

3. 数据库模式生成:根据元数据,Hibernate可以自动生成数据库表的DDL语句。

它会根据实体类的名称创建表名,根据属性名创建列名,并根据属性类型确定列的数据类型、长度、约束等。

生成的DDL语句可以包括创建表、添加索引、外键约束等操作。

4. 数据库表管理:Hibernate可以根据生成的DDL语句来创建数据库表。

在应用程序启动时,Hibernate会检查数据库中是否已存在相应的表,如果不存在则创建表;如果已存在但结构与元数据不匹配,则根据需要进行表结构的更新或修改。

总的来说,Hibernate生成数据库表的原理是通过分析实体类的元数据,自动生成对应的DDL语句,并根据需要创建、更新和管理数据库表。

这种自动化的方式大大简化了开发人员的工作,提高了开发效率。

hibernate基本原理

hibernate基本原理

hibernate基本原理Hibernate是一个开源的关系数据库映射框架,主要用于将对象映射到数据库表上。

它可以将Java类与数据库表格之间进行转换,并提供对象关系映射(ORM)的支持,从而使得Java开发人员可以脱离SQL语句进行开发。

使用Hibernate可以大大降低开发人员在实现持久化存储时的工作量,使开发人员能够专注于业务逻辑的实现,提高开发效率。

1. Hibernate的基本概念在学习Hibernate的基本原理之前,需要先掌握一些用于描述Hibernate系统的基本概念。

这些概念包括:• Hibernate Session:在Hibernate中,所有的操作都必须经过Session来操作,即Session是Hibernate与数据库之间交流的一个管道。

Session对象是线程不安全的,一个线程应该只使用一个Session对象。

• Hibernate Transaction:事务是数据库操作的基本单元,所有数据库操作都应该在事务里面完成。

Hibernate 中的事务对象通过SessionFactory创建,使用完之后应该关闭。

• Hibernate Configuration:该对象封装了Hibernate的配置信息,如连接数据库的URL、数据库用户名、密码等。

• Hibernate SessionFactory:对于一个Hibernate 应用来说,SessionFactory是其运行的核心。

SessionFactory是一个线程安全的对象,用于创建Session,每个应用应该只有一个SessionFactory对象。

• Hibernate Mapping:Hibernate通过Java对象和数据库表格进行交互,其中的映射信息就是Hibernate Mapping。

• Hibern ate Query:Hibernate查询是面向对象的,它使用Hibernate QBC(Criteria)和HQL(Hibernate Query Language)两种方式来生成查询语句。

传智播客佟刚hibernate检索策略和检索方式

传智播客佟刚hibernate检索策略和检索方式

• 关系数据库数据
Prepared by TongGang
类级别的检索策略
• 类级别可选的检索策略包括立即检索和延迟检索, 默认为延迟 检索
– 立即检索: 立即加载检索方法指定的对象 – 延迟检索: 延迟加载检索方法指定的对象
• 类级别的检索策略可以通过 <class> 元素的 lazy 属性进行设置 • 如果程序加载一个对象的目的是为了访问它的属性, 可以采取 立即检索. 如果程序加载一个持久化对象的目的是仅仅为了获 得它的引用, 可以采用延迟检索
• 在映射文件中定义命名查询语句
– Hibernate 允许在映射文件中定义字符串形式的查询语句. – <query> 元素用于定义一个 HQL 查询语句, 它和 <class> 元素并列.
– 在程序中通过 Session 的 getNameQuery() 方法获取查询语句对应的 Query 对象.
Prepared by TongGang
HQL 检索方式
• 绑定参数:
– Hibernate 的参数绑定机制依赖于 JDBC API 中的 PreparedStatement 的预定义 SQL 语句功能. – HQL 的参数绑定由两种形式:
• 按参数名字绑定: 在 HQL 查询语句中定义命名参数, 命名参数以 “:” 开 头. • 按参数位置绑定: 在 HQL 查询语句中用 “?” 来定义参数位置
Prepared by TongGang
多对一和一对一关联的检索策略
• Query 的 list 方法会忽略映射文件配置的迫切左外连接检索 策略, 而采用延迟检索策略 • 如果在关联级别使用了延迟加载或立即加载检索策略, 可以设 定批量检索的大小, 以帮助提高延迟检索或立即检索的运行性 能. • Hibernate 允许在应用程序中覆盖映射文件中设定的检索策略.

hibernate百度百科

hibernate百度百科

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate 可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

目录编辑本段Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。

这5个核心接口在任何开发中都会用到。

通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

下面对这五个核心接口分别加以介绍。

Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。

)。

但需要注意的是Session 对象是非线程安全的。

同时,Hibernate的session不同于JSP应用中的HttpSession。

这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

SessionFactory接口SessionFactory接口负责初始化Hibernate。

它充当数据存储源的代理,并负责创建Session对象。

这里用到了工厂模式。

需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

Configuration接口Configuration接口负责配置并启动Hibernate,创建SessionFactory 对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档