开题: hibernate这个框架解决了传统的jdbc的编写的任务量的繁重,让程序员更专心的实现自己的业务逻辑,他是操作对象的属性字段,而不是表的字段;
1,使用hibernate的8个步骤:
//1加载配置
Configuration con = new Configuration().configure();
//2打开session工厂
SessionFactory factory = con.buildSessionFactory();
//3打开session
Session session = factory.openSession();
//4打开事物
Transaction transaction = session.beginTransaction();
//5执行hql语句,在这里执行你要进行你的增删改查
//6,提交事物
transaction.commit();
//7,关闭session
//8,关闭session工厂
factory.close();
2,hibernate的三种状态以及三种状态的相互转换
a,临时态;
b,持久太;
c,游离态;
他们三种之间的相互转换
当new一个对象时是临时状态,临时状态save,或saveOrUpdate时是转换为持久太,这时可以对数据库进行操作 (凡是对持久太进行操作的都是对数据库进行操作),当持久太delete时是由持久太转换为临时态,当session,close,evict,clear时是由持久太转换为游离态, 当游离态update或saveOrUpdate时是由游离态转换为持久太,游离态delete时是转换为临时态,get或load时是持久太的转变;
如图
3,什么是脏检查:
1,当事务提交时,hibernate会对session中持久状态的对象进行检测,
判断对象的数据是否发生了改变.
4,什么是刷新缓存:
刷新缓存就是将session缓存同步刷新为与数据库一致;
5,在hibernate中查询语句hql语句:
a,什么是hql语句:
是一种面向对象的SQL语言 。 与sql不同的是里面是对象名称而不是数据库的表名
b,hql 的执行步骤:
1,获取session对象;
2,编写hql语句;
3,创建Query;
4,执行查询,得到查询结果;
6,执行hql语句可以采用两种方式:
a:list;
b:iterator;
7 hql语句中绑定参数的形式有两种:
a 按参数位置绑定:
b,按参数名字绑定:
8,在hql中如何获取唯一结果;
当你觉得你所查询的字段是唯一值是,就用这种查询,不然就会报错;
8,hibernate实现分页查询:
9:什么是投影查询:
HQL投影查询是一个查询持久化类的一个或多个属性;
a,将每条查询结果封装成Object对象;
b,将每条查询结果封装成Object数组;
c,将每条查询结果通过构造函数封装成对象;
10 什么是单向的多对一关联;
在多的一端加入一个外键指向一的一端,它维护的关系是多指向
例如:在emp表中有dept表,而dept表中没有emp;在他们之间所做的查询是多对一的查询;
11Hibernate的主键生成策略?解释increment与assigned的不同
当使用increment时,hibernate会先查询出上一次的最大的id数,然后在这基础上自加1;
而使用assigned时,hibernate无法对他进行自增,此时只有自己手动的为其添加id;