浏览 6218 次
锁定老帖子 主题:如何让hibernate和struts结合
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-22
1、我在action中使用SessionFactory、Session、Transaction。究竟应该是怎样调用的顺序才合理?我在处理时发现在处理他们之间关系的时候不是很清楚,和以前使用的struts中的Connection不太一样。 2、我想用Factory方法来定义一个方法,来返回SessionFactory。但是否应该直接返回Session呢?而且还有一个问题,在这个方法中应该如何来处理异常?我的经验不足,请赐教。 代码: public static net.sf.hibernate.SessionFactory getFactory() { try { if (hasFactory) { return MySessionFactory.sessionFactory; } else { sessionFactory = new Configuration().configure ().buildSessionFactory(); hasFactory = true; return sessionFactory; } } catch (HibernateException ex) { System.out.println(ex.getMessage()); return null; } 3、怎样关闭session?我要是在action中执行关闭是否会影响其它程序?我如果用Factory方法该怎样处理?我希望SessionFactory 只生成一次, 毕竟要读取xml文件,但session可以从Factory方法中取,用完之后可以关闭。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-22
1、不要在action里面写业务逻辑,当然更加不要写数据持久层的代码,这一点在你学习struts的时候应该被多次强调过的。
2、我前面好像贴过一个singleton实现的例子。返回SessionFactory还是返回Session都可以。 3、用完就关闭。 |
|
返回顶楼 | |
发表时间:2003-10-23
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能。
Robbin的个性化签名为什么变了?我还是喜欢以前的签名。对Robbin的忠告:不要怕被打击,因为被打击久了抗打击能力就特别强,习惯了就好了。 我以前认识的一个人,因为脸长得特别长,别人给他起了一个外号叫大驴。 一开始他还生气,但时间久了就不生气了,打电话得时候就自称为大驴。 |
|
返回顶楼 | |
发表时间:2003-10-23
有点问题不明白,请教一下:
1、不要在action里面写业务逻辑,当然更加不要写数据持久层的代码,这一点在你学习struts的时候应该被多次强调过的。 --------------------------- 当然,我把业务逻辑都封装到辅助实现类中的方法中去了,数据持久层的代码也封装到辅助实现类中的方法中去了,而且封装性很好,但在action中也要调用这些方法呀?如果不在action里面实现业务逻辑,我应该在什么地方实现呢?我原来一直是这么用的,用action来完成业务逻辑,然后跳转到指定页面。 2、市面上没有关于hibernate的书籍,我看的是hibernate给的例子和hibernate的文档,但都写的是在Servlet中的使用,和struts中的不太一样。例如: (1) 一开始,用initHibernate()来实现sessionFactory,这个我明白了。 (2)它在实现每一个逻辑时都用的是以下步骤: beginTransaction(); selectAllCats(out);//或者其它的业务逻辑 endTransaction(false); beginTransaction()中的功能是: session = sessionFactory.openSession(); transaction = session.beginTransaction(); endTransaction()中的功能是: if (commit) { transaction.commit(); } else { transaction.rollback(); } session.close(); 现在的问题是,如果我把业务逻辑都用辅助类来实现, 在action中来实现这些功能,我就必须把session作为一个参数传递给方法。session我可以在一开是来取得,但辅助类中的transaction 我怎么处理?如果在辅助类中的方法中我每次都重新得到一个 session,然后进行transaction ,用完后关闭,那么在一个action中我可能调用多个方法,那岂不是要多次重新生成session,效率也太低了把?我现在使用的java.sql.Connection在每个 action中只生成一个,由多个方法共同使用,action结束后再关闭。我认为这样效率才高。 3、实际上问题的关键就是session、transaction的使用范围,我究竟可以实现多大程度的封装,使业务逻辑清晰。 4、不要嫌我麻烦!不准鄙视! |
|
返回顶楼 | |
发表时间:2003-10-23
1、
SessionFactory sf = ...; Session s = ...; Transaction tx = ...; ... tx.commit();; s.close();; 2、如果我出版了一本Hibernate的书,你有兴趣购买吗? 引用 那么在一个action中我可能调用多个方法,那岂不是要多次重新生成session,效率也太低了把
效率不会很低,又或者你采用ThreadLocal模式,前面有蛮多ThreadLocal模式的讨论,搜索一下。 3、其实还是和2一个问题,如何有效管理Transaction和Session,在你的应用当中,如果为了追求效率高一些,那么采用ThreadLocal模式。 4、我换签名是因为感觉老的签名太招摇了,引起了很多人不满。 |
|
返回顶楼 | |
发表时间:2003-10-23
你是我的偶像,如果你要出书,我肯定会购买!!!
|
|
返回顶楼 | |