- 浏览: 1473253 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询:
1、QBE(Qurey By Example)检索方式
QBE是最简单的,但是功能也是最弱的,QBE的功能不是特别强大,仅在某些场合下有用。一个典型的使用场合就是在查询窗口中让用户输入一系列的查询条件,然后返回匹配的对象。QBE只支持=和like比较运算符,无法不大区间值,及其或的匹配。在这种情况下,还是采用HQL检索方式或QBC检索方式。
Java代码
1./**
2. * @function 根据传递过来的Object,分页显示在数据库中与其匹配的记录
3. * @param pageNo
4. * 当前页数
5. * @param pageSize
6. * 每页显示的记录数
7. * @param object
8. * 将查询条件封装为Object
9. * @return 将查询结果封装为Pager返回
10. */
11.public Pager findPageByExample(int pageNo, int pageSize, Object object)
12.{
13. Pager pager = null;
14. try
15. {
16. Criteria criteria = this.getSession().createCriteria(
17. Class.forName(this.getEntity()));
18.
19. if (object != null)
20. {
21. criteria.add(Example.create(object).enableLike());
22. }
23.
24. // 获取根据条件分页查询的总行数
25. int rowCount = (Integer) criteria.setProjection(
26. Projections.rowCount()).uniqueResult();
27. criteria.setProjection(null);
28.
29. criteria.setFirstResult((pageNo - 1) * pageSize);
30. criteria.setMaxResults(pageSize);
31.
32. List result = criteria.list();
33.
34. pager = new Pager(pageSize, pageNo, rowCount, result);
35.
36. } catch (RuntimeException re)
37. {
38. throw re;
39. } finally
40. {
41. return pager;
42. }
43.
44.}
/**
* @function 根据传递过来的Object,分页显示在数据库中与其匹配的记录
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的记录数
* @param object
* 将查询条件封装为Object
* @return 将查询结果封装为Pager返回
*/
public Pager findPageByExample(int pageNo, int pageSize, Object object)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
Class.forName(this.getEntity()));
if (object != null)
{
criteria.add(Example.create(object).enableLike());
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
注意代码的第20行,即criteria.add(Example.create(object).enableLike());这一行,需将Example.create(object)调用.enableLike()方法,不然不能模糊查询。
在BO层将需要模糊查询的列用"%%"串起来,不然仍然和"="一样。
BO层代码:
Java代码
1./**
2. * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
3. * @param pageNo
4. * 当前的页码
5. * @param pageSize
6. * 每页显示的记录数
7. * @param mendName
8. * 抢修人员的名称
9. * @param specialty
10. * 抢修人员的工种
11. * @param post
12. * 抢修人员的职称
13. * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
14. */
15.public Pager getInfoByQuery(int pageNo, int pageSize, String mendName,
16. String specialty, String post)
17.{
18.
19. EicMend eicMend = new EicMend();
20. if (mendName != null && mendName.length() > 0)
21. {
22. eicMend.setMendname("%" + mendName + "%");
23. }
24. if (specialty != null && specialty.length() > 0)
25. {
26. eicMend.setSpecialty(specialty);
27. }
28. if (post != null && post.length() > 0)
29. {
30. eicMend.setPost(post);
31. }
32.
33. Pager pager = erpManagerDao
34. .findPageByExample(pageNo, pageSize, eicMend);
35. return pager;
36.}
/**
* @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
* @param pageNo
* 当前的页码
* @param pageSize
* 每页显示的记录数
* @param mendName
* 抢修人员的名称
* @param specialty
* 抢修人员的工种
* @param post
* 抢修人员的职称
* @return 将符合条件的记录数以及页码信息封装成PagerBean返回
*/
public Pager getInfoByQuery(int pageNo, int pageSize, String mendName,
String specialty, String post)
{
EicMend eicMend = new EicMend();
if (mendName != null && mendName.length() > 0)
{
eicMend.setMendname("%" + mendName + "%");
}
if (specialty != null && specialty.length() > 0)
{
eicMend.setSpecialty(specialty);
}
if (post != null && post.length() > 0)
{
eicMend.setPost(post);
}
Pager pager = erpManagerDao
.findPageByExample(pageNo, pageSize, eicMend);
return pager;
}
执行SQL语句如下:
Sql代码
1.Hibernate: select count(*) as y0_ from YJZX.EIC_MEND this_ where
2.(this_.MENDNAME like ? and this_.POST like ?)
3.
4.Hibernate: select * from ( select this_.MENDID as MENDID23_0_, ......
5.this_.EXPERTREMARK as EXPERTR28_23_0_ from YJZX.EIC_MEND this_ where
6.(this_.MENDNAME like ? and this_.POST like ?) ) where rownum <= ?
Hibernate: select count(*) as y0_ from YJZX.EIC_MEND this_ where
(this_.MENDNAME like ? and this_.POST like ?)
Hibernate: select * from ( select this_.MENDID as MENDID23_0_, ......
this_.EXPERTREMARK as EXPERTR28_23_0_ from YJZX.EIC_MEND this_ where
(this_.MENDNAME like ? and this_.POST like ?) ) where rownum <= ?
所以只需将需模糊查询的列用"%%"链接即可。
2、QBC(Qurey By Criteria)检索方式
采用HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查询语句。QBC API提供了检索对象的另一种方式,它主要由Criteria接口、Criterion接口和Restrictions接口组成,它支持在运行时动态生成查询语句。比较常见的是两种传参方式:一种是用map传参,另一种是用Criterion...不定参数传参。
Map传参方式范例如下:
DAO层:
Java代码
1./**
2. * @function 分页显示符合所有的记录数,将查询结果封装为Pager
3. * @param pageNo
4. * 当前页数
5. * @param pageSize
6. * 每页显示的条数
7. * @param map
8. * 将查询条件封装为map
9. * @return 查询结果Pager
10. */
11.public Pager findPageByCriteria(int pageNo, int pageSize, Map map)
12.{
13. Pager pager = null;
14. try
15. {
16. Criteria criteria = this.getSession().createCriteria(
17. Class.forName(this.getEntity()));
18.
19. if (map != null)
20. {
21. Set<String> keys = map.keySet();
22. for (String key : keys)
23. {
24. criteria.add(Restrictions.like(key, map.get(key)));
25. }
26. }
27.
28. // 获取根据条件分页查询的总行数
29. int rowCount = (Integer) criteria.setProjection(
30. Projections.rowCount()).uniqueResult();
31. criteria.setProjection(null);
32.
33. criteria.setFirstResult((pageNo - 1) * pageSize);
34. criteria.setMaxResults(pageSize);
35.
36. List result = criteria.list();
37.
38. pager = new Pager(pageSize, pageNo, rowCount, result);
39.
40. } catch (RuntimeException re)
41. {
42. throw re;
43. } finally
44. {
45. return pager;
46. }
47.
48.}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @param map
* 将查询条件封装为map
* @return 查询结果Pager
*/
public Pager findPageByCriteria(int pageNo, int pageSize, Map map)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
Class.forName(this.getEntity()));
if (map != null)
{
Set<String> keys = map.keySet();
for (String key : keys)
{
criteria.add(Restrictions.like(key, map.get(key)));
}
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
Map传参方式对应BO层代码:
Java代码
1./**
2. * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
3. * @param pageNo
4. * 当前的页码
5. * @param pageSize
6. * 每页显示的记录数
7. * @param mendName
8. * 抢修人员的名称
9. * @param specialty
10. * 抢修人员的工种
11. * @param post
12. * 抢修人员的职称
13. * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
14. */
15.public Pager getInfoByQuery2(int pageNo, int pageSize, String mendName,
16. String specialty, String post)
17.{
18.
19. Map map = new HashMap();
20.
21. if (mendName != null && mendName.length() > 0)
22. {
23. map.put("mendname", "%" + mendName + "%");
24. }
25. if (specialty != null && specialty.length() > 0)
26. {
27. map.put("specialty", specialty);
28. }
29. if (post != null && post.length() > 0)
30. {
31. map.put("post", post);
32. }
33.
34. Pager pager = erpManagerDao.findPageByCriteria(pageNo, pageSize, map);
35. return pager;
36.}
/**
* @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
* @param pageNo
* 当前的页码
* @param pageSize
* 每页显示的记录数
* @param mendName
* 抢修人员的名称
* @param specialty
* 抢修人员的工种
* @param post
* 抢修人员的职称
* @return 将符合条件的记录数以及页码信息封装成PagerBean返回
*/
public Pager getInfoByQuery2(int pageNo, int pageSize, String mendName,
String specialty, String post)
{
Map map = new HashMap();
if (mendName != null && mendName.length() > 0)
{
map.put("mendname", "%" + mendName + "%");
}
if (specialty != null && specialty.length() > 0)
{
map.put("specialty", specialty);
}
if (post != null && post.length() > 0)
{
map.put("post", post);
}
Pager pager = erpManagerDao.findPageByCriteria(pageNo, pageSize, map);
return pager;
}
第二种方式:Criterion...不定参数传参方式。其代码如下所示:
DAO层代码:
Java代码
1./**
2. * @function 分页显示符合所有的记录数,将查询结果封装为Pager
3. * @param pageNo
4. * 当前页数
5. * @param pageSize
6. * 每页显示的条数
7. * @param criterions
8. * 不定参数Criterion
9. * @return 查询结果Pager
10. */
11.public Pager findPageByCriteria(int pageNo, int pageSize,
12. Criterion... criterions)
13.{
14. Pager pager = null;
15. try
16. {
17. Criteria criteria = this.getSession().createCriteria(
18. Class.forName(this.getEntity()));
19. if (criterions != null)
20. {
21. for (Criterion criterion : criterions)
22. {
23. if (criterion != null)
24. {
25. criteria.add(criterion);
26. }
27.
28. }
29. }
30.
31. // 获取根据条件分页查询的总行数
32. int rowCount = (Integer) criteria.setProjection(
33. Projections.rowCount()).uniqueResult();
34. criteria.setProjection(null);
35.
36. criteria.setFirstResult((pageNo - 1) * pageSize);
37. criteria.setMaxResults(pageSize);
38.
39. List result = criteria.list();
40.
41. pager = new Pager(pageSize, pageNo, rowCount, result);
42.
43. } catch (RuntimeException re)
44. {
45. throw re;
46. } finally
47. {
48. return pager;
49. }
50.
51.}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @param criterions
* 不定参数Criterion
* @return 查询结果Pager
*/
public Pager findPageByCriteria(int pageNo, int pageSize,
Criterion... criterions)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
Class.forName(this.getEntity()));
if (criterions != null)
{
for (Criterion criterion : criterions)
{
if (criterion != null)
{
criteria.add(criterion);
}
}
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
Criterion...不定参数传参方式对应BO层代码:
Java代码
1./**
2. * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
3. * @param pageNo
4. * 当前的页码
5. * @param pageSize
6. * 每页显示的记录数
7. * @param mendName
8. * 抢修人员的名称
9. * @param specialty
10. * 抢修人员的工种
11. * @param post
12. * 抢修人员的职称
13. * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
14. */
15.public Pager getInfoByQuery3(int pageNo, int pageSize, String mendName,
16. String specialty, String post)
17.{
18. Criterion criterion1 = null, criterion2 = null, criterion3 = null;
19. if (mendName != null && mendName.length() > 0)
20. {
21. criterion1 = Restrictions.ilike("mendname", mendName,
22. MatchMode.ANYWHERE);
23. }
24.
25. if (specialty != null && specialty.length() > 0)
26. {
27. criterion2 = Restrictions.ilike("specialty", specialty,
28. MatchMode.EXACT);
29. }
30.
31. if (post != null && post.length() > 0)
32. {
33. criterion3 = Restrictions.ilike("post", post, MatchMode.EXACT);
34. }
35.
36. Pager pager = erpManagerDao.findPageByCriteria(pageNo, pageSize,
37. criterion1, criterion2, criterion3);
38.
39. return pager;
40.}
/**
* @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
* @param pageNo
* 当前的页码
* @param pageSize
* 每页显示的记录数
* @param mendName
* 抢修人员的名称
* @param specialty
* 抢修人员的工种
* @param post
* 抢修人员的职称
* @return 将符合条件的记录数以及页码信息封装成PagerBean返回
*/
public Pager getInfoByQuery3(int pageNo, int pageSize, String mendName,
String specialty, String post)
{
Criterion criterion1 = null, criterion2 = null, criterion3 = null;
if (mendName != null && mendName.length() > 0)
{
criterion1 = Restrictions.ilike("mendname", mendName,
MatchMode.ANYWHERE);
}
if (specialty != null && specialty.length() > 0)
{
criterion2 = Restrictions.ilike("specialty", specialty,
MatchMode.EXACT);
}
if (post != null && post.length() > 0)
{
criterion3 = Restrictions.ilike("post", post, MatchMode.EXACT);
}
Pager pager = erpManagerDao.findPageByCriteria(pageNo, pageSize,
criterion1, criterion2, criterion3);
return pager;
}
3、HQL检索方式
HQL(Hibernate Query Language)是面向对象的查询语言,它和SQL查询语言有些相识。在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。
使用Query接口分页查询DAO代码:
Java代码
1./**
2. * @function 分页显示符合所有的记录数,将查询结果封装为Pager
3. * @param pageNo
4. * 当前页数
5. * @param pageSize
6. * 每页显示的条数
7. * @param instance
8. * 将查询条件封装为专家Bean
9. * @return 查询结果Pager
10. */
11.public List<Object> findPageByQuery(int pageNo, int pageSize, String hql,
12. Map map)
13.{
14. List<Object> result = null;
15. try
16. {
17. Query query = this.getSession().createQuery(hql);
18.
19. Iterator it = map.keySet().iterator();
20. while (it.hasNext())
21. {
22. Object key = it.next();
23. query.setParameter(key.toString(), map.get(key));
24. }
25.
26. query.setFirstResult((pageNo - 1) * pageSize);
27. query.setMaxResults(pageSize);
28.
29. result = query.list();
30.
31. } catch (RuntimeException re)
32. {
33. throw re;
34. }
35. return result;
36.}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @param instance
* 将查询条件封装为专家Bean
* @return 查询结果Pager
*/
public List<Object> findPageByQuery(int pageNo, int pageSize, String hql,
Map map)
{
List<Object> result = null;
try
{
Query query = this.getSession().createQuery(hql);
Iterator it = map.keySet().iterator();
while (it.hasNext())
{
Object key = it.next();
query.setParameter(key.toString(), map.get(key));
}
query.setFirstResult((pageNo - 1) * pageSize);
query.setMaxResults(pageSize);
result = query.list();
} catch (RuntimeException re)
{
throw re;
}
return result;
}
查询所有记录数的DAO代码:
Java代码
1./**
2. * @function 根据查询条件查询记录数的个数
3. * @param hql
4. * hql查询语句
5. * @param map
6. * 用map封装查询条件
7. * @return 数据库中满足查询条件的数据的条数
8. */
9.public int getTotalCount(String hql, Map map)
10.{
11. try
12. {
13. Query query = this.getSession().createQuery(hql);
14.
15. Iterator it = map.keySet().iterator();
16. while (it.hasNext())
17. {
18. Object key = it.next();
19. query.setParameter(key.toString(), map.get(key));
20. }
21.
22. Integer i = (Integer) query.list().get(0);
23. return i;
24. } catch (RuntimeException re)
25. {
26. throw re;
27. }
28.
29.}
/**
* @function 根据查询条件查询记录数的个数
* @param hql
* hql查询语句
* @param map
* 用map封装查询条件
* @return 数据库中满足查询条件的数据的条数
*/
public int getTotalCount(String hql, Map map)
{
try
{
Query query = this.getSession().createQuery(hql);
Iterator it = map.keySet().iterator();
while (it.hasNext())
{
Object key = it.next();
query.setParameter(key.toString(), map.get(key));
}
Integer i = (Integer) query.list().get(0);
return i;
} catch (RuntimeException re)
{
throw re;
}
}
BO层代码:
Java代码
1./**
2. * @function 将传递过来的参数封装成专家Bean,分页查询符合条件的记录
3. * @param pageNo
4. * 当前的页码
5. * @param pageSize
6. * 每页显示的记录数
7. * @param expertName
8. * 专家的名称
9. * @param expertSpecialty
10. * 专家的专业类别
11. * @param post
12. * 专家的行政职位
13. * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
14. */
15.public Pager getInfoByQuery(int pageNo, int pageSize, String expertName,
16. String expertSpecialty, String post)
17.{
18. StringBuffer hql = new StringBuffer();
19. hql.append("select count(expertid) from EicExpert where 1=1 ");
20.
21. Map map = new HashMap();
22.
23. if (expertName != null && expertName.length() > 0)
24. {
25. map.put("expertname", "%" + expertName + "%");
26. hql.append("and expertname like :expertname ");
27. }
28. if (expertSpecialty != null && expertSpecialty.length() > 0)
29. {
30. map.put("expertspecialty", expertSpecialty);
31. hql.append("and expertspecialty like :expertspecialty ");
32. }
33. if (post != null && post.length() > 0)
34. {
35. map.put("post", post);
36. hql.append("and post like :post ");
37. }
38.
39. String queryHql = hql.substring(22);
40. List result = erpManagerDao.findPageByQuery(pageNo, pageSize,
41. queryHql, map);
42. int rowCount = erpManagerDao.getTotalCount(hql.toString(), map);
43.
44. Pager pager = new Pager(pageSize, pageNo, rowCount, result);
45. return pager;
46.}
/**
* @function 将传递过来的参数封装成专家Bean,分页查询符合条件的记录
* @param pageNo
* 当前的页码
* @param pageSize
* 每页显示的记录数
* @param expertName
* 专家的名称
* @param expertSpecialty
* 专家的专业类别
* @param post
* 专家的行政职位
* @return 将符合条件的记录数以及页码信息封装成PagerBean返回
*/
public Pager getInfoByQuery(int pageNo, int pageSize, String expertName,
String expertSpecialty, String post)
{
StringBuffer hql = new StringBuffer();
hql.append("select count(expertid) from EicExpert where 1=1 ");
Map map = new HashMap();
if (expertName != null && expertName.length() > 0)
{
map.put("expertname", "%" + expertName + "%");
hql.append("and expertname like :expertname ");
}
if (expertSpecialty != null && expertSpecialty.length() > 0)
{
map.put("expertspecialty", expertSpecialty);
hql.append("and expertspecialty like :expertspecialty ");
}
if (post != null && post.length() > 0)
{
map.put("post", post);
hql.append("and post like :post ");
}
String queryHql = hql.substring(22);
List result = erpManagerDao.findPageByQuery(pageNo, pageSize,
queryHql, map);
int rowCount = erpManagerDao.getTotalCount(hql.toString(), map);
Pager pager = new Pager(pageSize, pageNo, rowCount, result);
return pager;
}
注:Pager类是我封装的一个分页类,包含 每页显示记录数,当前页,总记录数,每页显示数据的集合。因无关紧要,没有贴出来。另外我不知道Query接口有没有类似于Criteria那样可以直接在分页查询记录的同时查询出总记录条数,知道的大虾麻烦告诉下哈。在BO里设置不定参数的时候感觉也不太好,不知道大虾们可有比较好的办法。
发表评论
-
自定义用户类(UserType)的使用
2011-08-04 10:46 1798学习hibernate有段时间了,最近复习这门技术时看到了自定 ... -
技巧:利于ThreadLocal模式管理Session
2011-08-02 10:31 1225在利用Hibernate开发DAO模块时,我们和Session ... -
Hibernate中的回调与拦截机制
2011-07-27 17:31 1426在某些情况下,我们需要对实体的CURD操作进行捕获并执行一些操 ... -
HibernateTemplate中HibernateCallback的事务
2011-07-04 14:41 1404目的:使用HibernateTemplate执行execute ... -
Hibernate的复杂用法HibernateCallback
2011-07-04 14:40 1294HibernateTemplate还提供一种更加灵活的方式来操 ... -
Hibernate session FlushMode有五种属性
2011-07-04 13:59 16861、NEVER:已经废弃了,被MANUAL取代了2 MANUA ... -
数据库持久层——浅谈hibernate中的Session
2011-07-01 22:49 1633大多数情况下,Session 管理的目标聚焦于通过合理的设 ... -
详解Hibernate Session
2011-07-01 22:42 1452这里介绍Hibernate Session,Ses ... -
HttpSession与Hibernate中Session的区别
2011-07-01 22:41 1241一、javax.servlet.http.HttpSess ... -
巧用SQLQuery中的addScalar
2011-06-02 17:16 5698当我们用HQL进行子查询的时候,如select * from ... -
hibernate中SQLQuery的addEntity();方法
2011-04-13 14:48 2860如果使用原生sql语句进行query查询时,hibernate ... -
Hibernate的clear(),flush(),evict()方法详解
2011-03-24 11:18 17331.Clear 方法 无论是Load 还是 G ... -
hibernate模糊查询-Restrictions.ilike & Expression.like
2011-03-11 10:32 16314Criteria criteria = session.c ... -
current_session_context_class
2011-03-07 15:31 1256此设置的作用如下: What does sessionFac ... -
Hibernate的拦截器和监听器
2010-12-14 15:06 1355核心提示:最近项目需要,用到了Hibernate的拦截器和 ... -
孙卫琴.精通Hibernate:Java对象持久化技术详解_触发器使缓存与数据库不一致
2010-12-14 08:46 1341p198 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_优化报表查询的性能
2010-12-13 17:51 1242p332 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_查询结果类型
2010-12-13 17:34 1270p329 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_投影查询
2010-12-13 17:31 1377p325 -
深入浅出hibernate_夏昕_hibernate别名完成ResultSet和实体的映射
2010-12-13 17:09 1323p199
相关推荐
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.5 小结 第2章 myedipse开发工具对各种框架的支持 2.1 使用jsp的两种模式 2.2 struts框架的实现 2.3 hibernate框架的实现 2.4 jpa框架的实现 2.5 spring框架的实现 2.6 jsf框架的实现 2.7...
1.5 小结 32 第2章 mvc混血宠儿struts 2 33 2.1 初识mvc新秀struts 2 33 2.1.1 mvc概述 33 .2.1.2 struts 2的mvc实现 35 2.1.3 struts 2的基本组成 36 2.1.4 struts 2的常用类介绍 38 2.1.5 struts 2的业务...
11.3 数据库查询小结 143 11.3.1 GORM提供了便捷的 查询方法 143 11.3.2 基于HQL的查询 145 11.4 对GORM进行性能优化 146 11.4.1 设置抓取模式 147 11.4.2 使用二级缓存 147 11.5 使用GRAG工具生成Domain 151 11.6 ...
10.5.2.6 使用 HibernateTemplate 实现分页查询 254 10.6 小结 255 10.7 参考资料 255 10.7.1 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法 255 10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据...
第九章 开发Struts 1.x应用 145 9.1 介绍 145 9.2 创建Struts项目 147 9.2.1 创建Web项目 148 9.2.2 ... 175 9.6 小结 176 9.7 参考资料 176 <br>第九章的内容终于完整了,昨天发的那个还不完整
1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 ...
1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 ...
第1章 寻找grails之旅 1.1 java的困惑 1.2 webc2.0时代 1.3 java的力量 1.4 什么是grails 1.4.1 与java集成 ... 1.8 本章小结 ....... 2.4 本章小结 ... 3.10 本章小结 ... 11.7 本章小结
1.4 本章小结 5 第2章 MyEclipse集成开发环境的使用 6 2.1 MyEclipse集成开发工具界面 6 2.1.1 MyEclipse的菜单栏 7 2.1.2 MyEclipse的工具栏 13 2.1.3 MyEclipse的透视图 14 2.1.4 MyEclipse的视图 17 2.1.5 ...
1.3 小结..... 7 第2章 Struts基础...... 8 2.1 MVC模式概述..... 8 2.1.1 MVC设计模式..... 8 2.1.2 JSP Model 1与JSP Model 2.. 9 2.2 Struts的体系架构..... 10 2.3 Struts控制器组件类..... 12 2.3.1 Action...
1.7 本章小结 50 第2章 JSF的基本用法 51 2.1 MVC和JSF 52 2.1.1 MVC和常见MVC框架 52 2.1.2 JSF的优势 56 2.2 下载和安装JSF 57 2.3 JSF使用入门 60 2.3.1 从输入页面开始 60 2.3.2 开发托管Bean 61 2.3.3 定义导航...
本书的写作风格与笔者在新东方的授课风格一致:平实、浅显,放弃新名词,把所有深奥的内容变得浅显易懂。笔者不喜欢罗列一堆的新名词,抄大段大段的理论来炫耀自己。作为一个有多年编程经验的程序员,...19.7 小结 126
241 <br>10.6 小结... 242 <br>10.7 参考资料... 242 <br>10.7.1 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法... 242 <br>10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的...