hibernate list和iterate
list方法会一次查出所有内容,放在list里和缓存中。再次查询同一内容仍然会去数据库重新查一遍,并刷新缓存。
iterate方法会一次查出所有内容的ID,等用到某个ID对应的内容时又会去根据主键查询内容,并放在缓存中,当再次查询相同的内容时不再查询数据库,直接调用session级缓存。
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class HibernateQLTest {
private static SessionFactory sf;
@BeforeClass
public static void beforeClass() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
}
@AfterClass
public static void afterClass() {
sf.close();
}
@Test
public void testSchemaExport() {
new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
}
@Test
public void testSave() {
Session session = sf.openSession();
session.beginTransaction();
for(int i=0; i<10; i++) {
Category c = new Category();
c.setName("c" + i);
Topic t = new Topic();
t.setCategory(c);
t.setTitle("t" + i);
t.setCreateDate(new Date());
session.save(c);
session.save(t);
}
session.getTransaction().commit();
session.close();
}
//join fetch
@Test
public void testQueryList() {
Session session = sf.openSession();
session.beginTransaction();
//List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();
List<Category> categories = (List<Category>)session.createQuery("from Category").list();
for(Category c : categories) {
System.out.println(c.getName());
}
List<Category> categories2 = (List<Category>)session.createQuery("from Category").list();
for(Category c : categories2) {
System.out.println(c.getName());
}
session.getTransaction().commit();
session.close();
}
@Test
public void testQueryIterate() {
Session session = sf.openSession();
session.beginTransaction();
//List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();
Iterator<Category> categories = (Iterator<Category>)session.createQuery("from Category").iterate();
while(categories.hasNext()) {
Category c = categories.next();
System.out.println(c.getName());
}
Iterator<Category> categories2 = (Iterator<Category>)session.createQuery("from Category").iterate();
while(categories2.hasNext()) {
Category c = categories2.next();
System.out.println(c.getName());
}
session.getTransaction().commit();
session.close();
}
public static void main(String[] args) {
beforeClass();
}
}
最新文章
- LNMP平台搭建---PHP安装篇
- SQL基础之select
- 【P1813】8的倍数
- jQuery中利用JSONP解决AJAX跨域问题
- Mysql-5.6乱码问题
- UITableViewCell性能优化
- 经典排序算法 - 归并排序Merge sort
- 网站启用gzip压缩
- 网络协议 13 - HTTPS 协议:加密路上无尽头
- RxJS 实现摩斯密码(Morse) 【内附脑图】
- c#之如何转换文本文件编码格式为utf-8
- UVA 11990 `Dynamic&#39;&#39; Inversion CDQ分治, 归并排序, 树状数组, 尺取法, 三偏序统计 难度: 2
- Beta阶段冲刺---Day5
- mysql 多行合并一行
- 20155319 2016-2017-2 《Java程序设计》第5周学习总结
- window.print()局部打印三种方式
- Sql Server自增ID与序号的使用
- poj 2942 Knights of the Round Table(点双连通分量+二分图判定)
- sqlldr errors
- 【assembly】用汇编写的一个BMP图片读取器
热门文章
- .Net中DataGridview数据如何导出到excel表
- 【优先队列】POJ1442-Black Box
- 【线段树/区间开平方】BZOJ3211-花神游历各国
- Atom | 编辑器Atom的使用小结
- (Mark)Myeclipse10.6 下怎么安装Jad插件
- 嵌入式学习之Nand Flash
- OpenShift应用镜像构建(2) - 链式构建
- 为什么深度神经网络难以训练Why are deep neural networks hard to train?
- 十三.spring-boot使用spring-boot-thymeleaf
- tomcat 部署 RESTful 服务实例