lazy
需要数据的时候才要加载
懒加载的概念
类的懒加载
session.load方法产生的是代理对象,该代理类是持久化类的子类
集合的懒加载
set的延迟加载:
true
false
extra
说明:
- 1、因为延迟加载在映射文件设置,而映射文件一旦确定,不能修改了。
- 2、延迟加载是通过控制sql语句的发出时间来提高效率的。
manytoone的懒加载
对于性能来说,没有什么影响,所以随便怎么样都行
抓取策略
join:左外连接
select:默认的值
subselect:子查询
说明:
1、因为抓取策略的设置在映射文件中,所以一旦映射文件生成就不能改变了。
2、通过发出怎么样的SQL语句加载集合,从而优化效率的。
查询
hql语句
单表
结果为Long类型的数据,该表的总的行数
一对多
Criteria查询
sql查询
查询的技术路线
错误分析
错误1
该Person在hibernate的映射文件中没有找到:
1、在hibernate的配置文件中没有加载相应的映射文件
2、也有可能是客户端的session的操作的对象在映射文件中找不到
错误2
错误3
当在hibernate内部生成sql语句的时候,要给insert语句赋值,值从属性的getter方法
中得到,在拼接getter方法的时候,出错了。
错误4
当在执行session.get方法的时候,会利用Java的反射机制创建一个对象,利用的是默认的构造函数。所以一个持久化类中必须有一个默认的构造函数
错误5
要求主键必须在程序中进行设置
错误6
主键的生成策略支持表的主键的值的自动增长,但是该表本身没有这样的机制。
错误7
错误解析:
在flushing之前,保存一个临时状态的对象
前提条件:
在Classes.hbm.xml文件中
在客户端:
所以hibernate在保存classes的时候,就不知道该怎么办了。
错误8
错误9
错误原因:当一个对象从数据库中加载数据的时候,session已经关闭了
所有的数据在数据库中加载出来以后,session才能关闭。