对Hibernate的学习总结

本文介绍Hibernate框架的基础概念,包括持久化的意义与实现方法,并详细讲解使用Hibernate进行数据库操作的步骤及优化技巧。涵盖HQL查询语言的应用、关联关系配置及性能优化等方面。

PDF1

1.什么是持久化?

将程序中数据在瞬时状态和持久状态间转换的机制

2.为什么要持久化?

对象持久化才能保存到数据库中

3.为什么要学习Hibernate?

JDBC进行了轻量级的对象封装,减少了代码量,程序员可以使用对象编程思想来操作数据库

4.使用Hibernate实现对数据库增删改查的步骤

1)创建一个Configuration对象,通过该对象的cinfigura()方法加载Hibernate配置文件

2)通过Configuration实例的buildSessionFactory()方法构建一个SessionFactory

3)sessionFactory.OpenSession();

4)session.beginTransaction();

5.简述JDBC的缺点

开发效率低,代码冗余,重复性工作多

6.为项目添加Hibernate的准备工作

创建连接Oracle的配置文件HibernateSessionFactory.cfg.xml

创建持久化对象(需要被Hibernate持久化到数据库中的类)

创建持久对象配置文件,与持久化类放在同一目录下

PDF2

1.Hibernate的基本原理

通过配置文件把数据表之间的关系解释为java对象之间的关系

2.Hibernate的优势

Hibernate 是一个优秀的JAVA 持久化层解决方案

是当今主流的对象-关系映射工具

Hibernate简化了JDBC繁琐的编码

3.使用Hibernate操作数据库的步骤

1)创建一个Configuration对象,通过该对象的cinfigura()方法加载Hibernate配置文件

2)通过Configuration实例的buildSessionFactory()方法构建一个SessionFactory

3)sessionFactory.OpenSession();

4)session.beginTransaction();

4.实体对象的三种状态

临时,持久,游离

5.如何配置单向一对多关联关系

在一方实体类中写多方的set集合,一方的映射文件写one-to-many

6.如何配置单项多对一关联关系

在多方实体类写一方的对象,在多方映射文件中写many-to-one

7如何配置双向一对多关联关系

一方实体类写多方set集合,多方实体类写一方的对象,一方映射文件写one-to-many,多方映射文件写many-to-one

8Cascade属性和inverse属性的作用和区别

Cascade级联操作,执行某对象操作时指定要不要对其相关对象执行操作

Inverse反转 ,指定执行操作的主动权给哪一方

9如何配置多对多关联关系

单项的话在一方实体类中存在另一方的set 对象集合,该方映射文件中写many-to-many

双向 在双方类都写对方的set集合,配置文件都写many-to-many

PDF3

1.为什么使用HQL查询?

不需要再编写繁复的SQL语句,针对实体类及其属性进行查询

查询结果是直接存放在List中,不需要再次封装

独立于数据库,对不同的数据库根据Hibernate dialect 属性的配置自动生成不同的SQL语句执行

2.如何使用HQL查询

得到session

编写HQL语句

创建Query对象

3.HQL支持的聚合函数与SQL支持的一致吗?常用的聚合函数有哪些

一致 sum avg min max count

4.HQL如何实现分页

setFirstResult()设置第一条记录的位置

setMaxResult()设置返回的记录条数

5.Hibernate主要提供哪两种数据查询方式

HQL    QBC(Criteria)

6.HQL查询参数绑定有几种方式

命名参数,占位符

PDF4

1.如何优化HQL

避免or,not,like,having,distinct的使用

2.Hibernate数据加载方式有哪些?有什么区别

立即检索:立即加载检索方法指定的对象关联的对象,不管对象处于持久化状态还是游离状态,应用程序都可以方便地从一个对象导航到与它关联的对象,select语句多,可能会加载应用程序不需要访问的对象,造成内存空间的浪费

延迟检索:延迟加载检索方法指定的对象关联的对象,可以避免执行过多的select语句,避免加载应用程序不需要访问的对象,提高检索性能,节省内存空间

3.HQL连接查询有几种方式

内连接 inner joinjoin

迫切内连接 inner join fetch或 join fetch

左外链接 left outer join或 left join

迫切左外链接 ,右外连接

4.如何使用本地SQL查询

<query>元素用于定义一个HQL查询语句,它和<class>元素并列

<![CDATA[HQL]]>方式保存HQL

在程序中通过session对象的getNamedQuerry()方法获取该查询

对象

5.HQL优化从哪几个方面考虑

节约内存,提高效率

6.在映射文件中如何定义命名查询?

<query name="">

<![CDATA[ From User u where u.name=:name]]>

</query>

PDF5

1.如何使用Criteria查询数据

Criteria c==session.createCriteria(User.class);//创建criteria对象

C.add(Restriction.eq("name","bob"));//add添加查询条件

List li=C.list();

2.如何使用Criteria进行查询排序

c.addOrder(Order.desc("price"));

3.如何使用Criteria进行查询分页

setFirstResult()设置第一条记录的位置

setMaxResult()设置返回的记录条数

4.如何使用Example查询已有的实体对象的类似对象

把查询条件赋给实体对象

通过sessioncreateCriteria(.lass)创建实体对象

C.add(Example.create(对象))//传入对象

5.如何使用Criteria限定查询返回的数据行数

setMaxResult()设置返回的记录条数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值