1、脏检查和刷新缓存的区别:
脏检查:是事务提交的时候进行的
刷新缓存:刷新缓存的机制就是脏检查
两种方式:
1.事务提交
2.session.flush();
2、关于HQL语句
from Dept 检索所有部门信息
select d from cn.shang.entity.student d 检索所有部门信息
3、inverse
解析:
维护关联关系
true:自己不维护关联关系,对方维护
false:自己维护关联关系
4、延迟加载:
分类:
类级别 true(默认),false
一对多和多对多(one to many & many to many) true(default),false,extra(加强延迟加载)
多对一(many to one) 没有set proxy(default),no-proxy,false
5、持久化类
public class Dept {
@Id 持久化类的标识
Hibernate_Session
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")
定义自己的序列生成器
@SequenceGenerator(name="seq_gen",sequenceName="SEQ_Num",allocationSize=1,initialValue=1)
private Integer deptNo;
private String deptName;
@OneToMany(mappedBy="dept",cascade={CascadeType.ALL})
/* @Fetch(FetchMode.JOIN)
@LazyCollection(LazyCollectionOption.FALSE)*/
private Set emps=new HashSet();
public Set getEmps() {
return emps;
}
public void setEmps(Set emps) {
this.emps = emps;
}
public Dept(Integer deptNo, String deptName) {
this.deptNo = deptNo;
this.deptName = deptName;
}
public Dept() {
}
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}
试题案例:
1.在Hibernate中,以下关于主键生成器说法错误的是(C)。
A.increment可以用于类型为long、short或byte的主键 long,short,byte都是特殊的int类型
B.identity用于如SQL Server、DB2、MySQL等支持标识列的数据库 identity是标识列的意思
C.sequence用于如Oracle、SQL Server等支持序列的数据库 SqlServer是不能使用序列的
D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值
2.在Hibernate中,关于脏检查和刷新缓存说法正确的是( CD)。
A.当事务提交时,会发生脏检查 事务提交之前会自动调用commit()方法
B.Session的flush( )方法是刷新缓存的方法
C.在执行Session的commit( )方法之前不会调用Session的flush( )方法
D.编写代码时,调用commit( )方法之前要调用flush( )方法 无需手动调用,hibernate会自动帮我们调用方法!
刷新缓存刷新的就是脏检查
3.使用HQL查询所有部门信息,以下正确的是(AD)。
A.from Dept
B.select * from cn.jbit.demo.entity.Dept 不能使用*
C.select Dept from cn.jbit.demo.entity.Dept d 正确写法是:select d from cn.jbit.demo.entity.Dept d
D.select d from Dept d
4.关于Query接口的list( )和iterate( )方法,说法正确的是(AD)。
A.执行list( )方法,查询所有符合条件的记录
B.执行iterate( )方法,查询所有符合条件的记录
C.执行list( )方法,查询出所有符合条件的主键值
D.执行iterate ( )方法,查询出所有符合条件的主键值
list()方法的作用是查询记录,而iterate()方法是检索id
5.在HQL中,关于Query接口绑定参数的方法,说法正确的是(ABCD)。
A.setParameter( )方法用于绑定任意类型的参数 正确,参数类型可以是object
B.setParameter( )有重载的方法
C.setProperties( )有重载的方法
D.setProperties( )方法用于绑定命名参数
6.在Hibernate中,关于以下映射配置,说法错误的是(D)。
name="dept" column="DEPTNO" class="cn.jbit.hibernatedemo.entity.Dept" /> A.此配置信息描述了cn.jbit.hibernatedemo.entity.Emp类和EMP表的映射 B.描述的是scott用户的EMP表 C. D. 7.在Hibernate映射文件中,关于inverse属性说法正确的是(ACD)。 A.inverse属性有两个值:true、false 正确 B. C. D.inverse属性用于指定维护关联关系的那一方 正确 8.在Hibernate映射文件中,关于延迟加载配置说法错误的是(B) A. B. C.< set>标签中lazy属性可选值:true、extra和false D. 类级别 true(默认),false 9.在Hibernate映射文件中,关于 A. B. C. D.
一对多和多对多 true(default),false,extra(加强延迟加载)
多对一(没有set) proxy(default),no-proxy,false