帮忙看个Hibernate题目

wula0010 2013-12-23 12:45:49
指出一下代码哪里错误使用了Hibernate。
背景简介:Board是一个实体类,id是它的主键,name和description是他的两个属性。BoardDao是Board实体的数据访问对象,BoardBo是业务对象,用户提交变更Board对象的请求,由Struts的BoardAction接收,调用BoardBo处理。HibernateUtil.currentSession()用于返回当前请求的Session对象。
1. //数据访问层代码:BoardDao.java
2. public Board loadBoard(Long id) {
3. Session session = HibernateUtil.currentSession();
4. return session.load(Board.class, id);
5. }
6. public void updateBoard(Board board) {
7. Session session = HibernateUtil.currentSession();
8. session.update(board);
9. }
10.
11. //业务对象层代码:BoardBo.java
12. private BoardDao boardDao;
13. public void updateBoard(Long id, String name, String description) {
14. Board board = boardDao.loadBoard(id);
15. board.setName(name);
16. board.setDescription(description);
17. boardDao.updateBoard(board);
18. }
19.
20. //Web控制器代码:BoardAction.java
21. private BoardBo BoardBo;
22. public ActionForward execute(
23. ActionMapping mapping,
24. ActionForm form,
25. HttpServletRequest request,
26. HttpServletResponse response) throws Exception {
27. String id = request.getParameter("id");
28. String name = request.getParameter("name");
29. String description = request.getParameter("description");
30. boardBo.updateBoard(id, name, description);
31. return mapping.findForward("update-success");
32. }
...全文
228 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
April_CH 2013-12-24
  • 打赏
  • 举报
回复
引用 8 楼 baohuan_love 的回复:
[quote=引用 7 楼 qust_2011 的回复:] [quote=引用 5 楼 baohuan_love 的回复:] [quote=引用 2 楼 qust_2011 的回复:] 学习,这里session怎么获取的?为什么说这段代码错误使用了Hibernate?
DAO里调用getHibernateTemplate()这个知道吧,session可以这样获取: SessionFactory sf = getHibernateTemplate().getSessionFactory(); Session si = sf.getCurrentSession();[/quote] 为什么不直接用hibernate模板方法getHibernateTemplate,这样不需要再开启、关闭事务了[/quote] 因为有些写数据库的操作必须在事务管理模式下完成,比如写oracle的大数据字段blob.[/quote] 事务当然还要用的,直接用getHibernateTemplate.save(),配spring声明式事务,这样呢
  • 打赏
  • 举报
回复
引用 7 楼 qust_2011 的回复:
[quote=引用 5 楼 baohuan_love 的回复:] [quote=引用 2 楼 qust_2011 的回复:] 学习,这里session怎么获取的?为什么说这段代码错误使用了Hibernate?
DAO里调用getHibernateTemplate()这个知道吧,session可以这样获取: SessionFactory sf = getHibernateTemplate().getSessionFactory(); Session si = sf.getCurrentSession();[/quote] 为什么不直接用hibernate模板方法getHibernateTemplate,这样不需要再开启、关闭事务了[/quote] 因为有些写数据库的操作必须在事务管理模式下完成,比如写oracle的大数据字段blob.
April_CH 2013-12-24
  • 打赏
  • 举报
回复
引用 5 楼 baohuan_love 的回复:
[quote=引用 2 楼 qust_2011 的回复:] 学习,这里session怎么获取的?为什么说这段代码错误使用了Hibernate?
DAO里调用getHibernateTemplate()这个知道吧,session可以这样获取: SessionFactory sf = getHibernateTemplate().getSessionFactory(); Session si = sf.getCurrentSession();[/quote] 为什么不直接用hibernate模板方法getHibernateTemplate,这样不需要再开启、关闭事务了
末日哥 2013-12-24
  • 打赏
  • 举报
回复
引用 4 楼 baohuan_love 的回复:
[quote=引用 1 楼 fudongrifdr 的回复:] 第8行代码 session.update(board); 前后加上事务
Transaction tx=session.beginTransaction();
session.update(board);
tx.commit();
说的有道理[/quote]
  • 打赏
  • 举报
回复
引用 2 楼 qust_2011 的回复:
学习,这里session怎么获取的?为什么说这段代码错误使用了Hibernate?
DAO里调用getHibernateTemplate()这个知道吧,session可以这样获取: SessionFactory sf = getHibernateTemplate().getSessionFactory(); Session si = sf.getCurrentSession();
  • 打赏
  • 举报
回复
引用 1 楼 fudongrifdr 的回复:
第8行代码 session.update(board); 前后加上事务
Transaction tx=session.beginTransaction();
session.update(board);
tx.commit();
说的有道理
  • 打赏
  • 举报
回复
使用hibernate的session操作数据库,进行数据库写操作时,应该操作之前开启事务,操作之后关闭事务。
末日哥 2013-12-23
  • 打赏
  • 举报
回复
第8行代码 session.update(board); 前后加上事务
Transaction tx=session.beginTransaction();
session.update(board);
tx.commit();
April_CH 2013-12-23
  • 打赏
  • 举报
回复
学习,这里session怎么获取的?为什么说这段代码错误使用了Hibernate?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧