8)
设置Hibernate默认的对关系的批量抓取大小值,建议设置值为4,8,16。
要理解default_batch_fetch_size就必须要理解什么叫做batch_fetch。首先来看在关系映射中会出现的几个问题。下面是一个简单的one2many关系的映射:
public class Department {
private Long id;
private String name;
private Set emps = new HashSet();
}
对应的Employee对象:
public class Employee {
private Long id;
private String name;
}
很简单,Employee和Department是一个单向的many2one的关系。要完成关系的映射很简单:
<hibernate-mapping package="cd.itcast.hibernate.day2.batchfetch">
<class name="Department">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<set name="emps">
<key column="DEPT_ID"/>
<one-to-many class="Employee"/>
</set>
</class>
<class name="Employee">
<id name="id">
<generator class="native" />
</id>
</class>
</hibernate-mapping>
假如现在有7个Department对象,分别有7个Employee对象和其对应:
@Before
public void save() {
Session session = HibernateUtil.getInstance().getSession();
session.beginTransaction();
for(int i=1;i<8;i++){
Department d=new Department();
d.setName("d"+i);
Employee e=new Employee();
e.setName("e"+i);
d.getEmps().add(e);
session.save(d);
session.save(e);
}
session.getTransaction().commit();
session.close();
}
假如现在有这样一个需求,在部门列表中,要列出部门的名称