1.Hibrenate 是什么?
Hibernate是一个开放源代码的对象关系映 射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
2.Hibernate 与JDBC 相比有什么优点
<1>.Hibernate实现了对JDBC的封装,减少了代码的冗余。
<2>.使用Hibernate 程序员就可以直接使用Hibernate的各种接口和方法,而不用去关注一些实现过程。
<3>.Hibernate对JDBC进行封装,实现了对象的持久化。
<4>.Hibernate支持面向对象的调用。
<5>.Hibernate使用HQL语言,查询结果直接封装成java对象。
3.ORM
ORM是持久化操作的一种解决方案,主要是把对象模型和关系型数据库关系模型映射起来,并且使用元素对这些关系映射进行描述。
4.Hibernate配置文件
hibernate.cfg.xml:用于配置数据库连接,运行时所需的各种属性。批量处理,加载驱动。
<1>.数据库连接信息。
<2>.Hibernate相关配置。
<3>.连接池配置。
<4>.实体类映射文件路径。
5.Hibernate映射文件
*.hbm.xml:将表与类,属性与主键,属性与字段相映射。
6.Hibernate操作数据库步骤
数据库操作的几个步骤:
<1>.configuration,获取配置,建立连接。
<2>.创建会话SessionFactory。
<3>.打开一个session。
<4>.开始一个事务(save,saveOrUpdate,etc)。
<5>.持久化操作。
<6>.提交事务。
<7>.关闭事务。
7.Hibernate接口
<1>.Configuration 对象用来配置和引导Hibernate,一个hibernate应用使用一个configuration来制定主配置文件的位置,然后创 建会话。
Configuration cfg = new Configuration().configure("/cfg/author.cfg.xml");
<2>.SessionFactory.一个Hibernate从SessionFactory中获得会话实例。一般情况下,应用层只有一个SessionFactory,在创建时被初始化。
它是重量级的,创建时耗费资源多,代价比较大,一般把它作为静态方法。
<3>.Session。Session(会话)接口是Hibernate应用中的重要接口,它拥有操作对象持久化的唯一API,可用于管理对象,也称“管理化持久器”。
<4>.Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC和JTA事务等,Transaction接口主要包括commit()和rollback()两个方法,前者是事务的提交,后者是事务的滚回。
<5>.Query接口允许在数据库上查询,并控制查询具体执行,查询使用SQL和HQL,Query查询可用来绑定查询参数,限定查询返回结果数,并执行查询。
8.实体类对象状态
实体对象的三种状态:
<1>.瞬时状态(Transient)。刚用new创建,还没有被持久化,不在Session缓存中。
<2>.持久化状态(Persistent)。已经被持久化,且处于Session缓存中。
<3>.游离状态(Detached)。已经被持久化,但不在Session缓存中。
三种状态的转换关系:
瞬时状态
经过save()或saveOrUpdate()转换为持久化状态,持久化状态经过delete()转换为瞬时状态,持久化状态经过evict(),close()或clear()就转换为游离态,游离态经过update(),saveOrUpdate或lock()可以转换为持久化状态。
对象也可以直接通过get(),load(),find()或iterate()等直接转换为持久化状态,而不用经过new转换为瞬时状态后再转换。
9.关联映射
实体之间的关系:关联关系,通过一个对象持有另一个对象的实例。泛化关系,通过对象之间的继承方法来实现。
<1>.many to one
<2>.one to many
<3>.双向一对多。
<4>.cascade 与 inverse
cascade="save-update"意味着对某个对象执行save或update时,其关联对象会自动被持久化。可用于set标签和many-to- one标签。
cascade=“delete”级联删除关联集合用于set标签。
inverse 用于one to many 节点,默认为false。
11.HQL
Hibernate支持两种主要查询方式:
<1>.HQL。是一种面向对象的查询语言,没有表与字段的概念,只有对象类与属性的概念。
<2>.Criteria查询。他用面向对象的方式将查询过程做了封装。
使用Hibernate需要4步;
<1>.得到Session。
<2>.编写HQL语句。
<3>.创建Query对象。
<4>.执行查询,得到结果。
HQL查询中的参数绑定。
<1>.定位参数。
定位之后,参数从零开始。
<2>.分页管理。
从第10个开始分页,第10个为0,然后查10为一页。
<3>.延迟加载。
Hebernate延迟加载策略:Hebernate默认的是延迟加载策略,即按需加载,这种加载策略大大减少了资源的浪费,提高了系统的效率,如果要改变这种策略,只需在实体的映射文件中设置lazy="false"即可,但必须慎用。