社区
Web 开发
帖子详情
SessionFactory.close()和close(session)的区别
bear234
2013-08-24 11:22:55
用hibernate-struts-spring做东西
在做有关DAO的部分
创建了一个SessionFactory以创建若干个Session(SessionFactory.openSession())
使用Session需要关闭的时候
出现了题目中的问题
是应该session.close()呢 还是 SessionFactory.close()?
谢谢
...全文
287
3
打赏
收藏
SessionFactory.close()和close(session)的区别
用hibernate-struts-spring做东西 在做有关DAO的部分 创建了一个SessionFactory以创建若干个Session(SessionFactory.openSession()) 使用Session需要关闭的时候 出现了题目中的问题 是应该session.close()呢 还是 SessionFactory.close()? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wind_elf
2013-08-25
打赏
举报
回复
SessionFactory是Session工厂,也就是一个SessionFactory可以在需要Session的时候就产出一个。当你不再需要SessionFactory的时候就可以调用HibernateDB里面的close()方法了。一般是不会调用的。
bear234
2013-08-25
打赏
举报
回复
public class HibernateDB { private SessionFactory sessionFactory = (new Configuration().configure()).buildSessionFactory(); public Session connect() { return this.sessionFactory.openSession(); } public void close() { this.sessionFactory.close(); } } public interface DAOClient{//save update etc...} public class DAOClientImpl extends HibernateDB implements DAOClient{ //具体实现save等方法 比如findAll public ArrayList<Client> findAll(){ Session session = connect(); //读取出数据库中相关数据 形成一个ArrayList //这里,上面的session用完了 所以应该session.close()???? //返回上面形成的ArrayList } } 那么 什么时候应该调用HibernateDB里面的close方法???
ACCP8.0北大青鸟SSH10章上机
Configuration configuration = new Configuration().configure();
Session
Factory
session
Factory
= configuration.build
Session
Factory
();
Session
session
=
session
Factory
.open
Session
(); 或者通过MyEclipse的Hibernate工具自动生成的Hibernate
Session
Factory
.get
Session
()方法来获取
Session
,调用Hibernate
Session
Factory
.
close
Session
()方法来关闭
session
。
J2EE利用Hibernate采用B/S架构网页设计
package hib; import org.hibernate.HibernateException; import org.hibernate.
Session
; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate
session
s, tied to the * current thread of execution. Follows the Thread Local
Session
* pattern, see {@link http://hibernate.org/42.html }. */ public class Hibernate
Session
Factory
{ /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current
session
. */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal<
Session
> threadLocal = new ThreadLocal<
Session
>(); private static Configuration configuration = new Configuration(); private static org.hibernate.
Session
Factory
session
Factory
; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile);
session
Factory
= configuration.build
Session
Factory
(); } catch (Exception e) { System.err .println("%%%% Error Creating
Session
Factory
%%%%"); e.printStackTrace(); } } private Hibernate
Session
Factory
() { } /** * Returns the ThreadLocal
Session
instance. Lazy initialize * the
Session
Factory
if needed. * * @return
Session
* @throws HibernateException */ public static
Session
get
Session
() throws HibernateException {
Session
session
= (
Session
) threadLocal.get(); if (
session
== null || !
session
.isOpen()) { if (
session
Factory
== null) { rebuild
Session
Factory
(); }
session
= (
session
Factory
!= null) ?
session
Factory
.open
Session
() : null; threadLocal.set(
session
); } return
session
; } /** * Rebuild hibernate
session
factory
* */ public static void rebuild
Session
Factory
() { try { configuration.configure(configFile);
session
Factory
= configuration.build
Session
Factory
(); } catch (Exception e) { System.err .println("%%%% Error Creating
Session
Factory
%%%%"); e.printStackTrace(); } } /** *
Close
the single hibernate
session
instance. * * @throws HibernateException */ public static void
close
Session
() throws HibernateException {
Session
session
= (
Session
) threadLocal.get(); threadLocal.set(null); if (
session
!= null) {
session
.
close
(); } } /** * return
session
factory
* */ public static org.hibernate.
Session
Factory
get
Session
Factory
() { return
session
Factory
; } /** * return
session
factory
* *
session
factory
will be rebuilded in the next call */ public static void setConfigFile(String configFile) { Hibernate
Session
Factory
.configFile = configFile;
session
Factory
= null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } }
按类型查询titles表的对应数据
通过titles的类型查询对应信息 Titles t=new Titles(); List
type=dao.getalltype(t); for(String types:type){ System.out.println(types); } Hibernate
Session
Factory
.
close
Session
(); }
把实体从一个数据库复制到另一个数据库
方法1: 写代码从
session
Factory
1中取实体,然后在
session
Factory
2中保存实体 方法2:
Session
session
1 =
session
Facory1.open
Session
(); Transaction tx1 =
session
1.beginTransaction(); Customer customer = (Customer)
session
1.get(Customer.class, 1L)); tx1.commit();
session
1.
close
();
Session
session
2 = sessio
hibernate的
Session
factory
.getCurrent
Session
详解和在项目中常用方法
Session
factory
.getCurrent
Session
与 open
Session
() 的
区别
1. getCurrent
Session
创建的
session
会和绑定到当前线程,而open
Session
不会。 2. getCurrent
Session
创建的线程会在事务回滚或事物提交后自动关闭,而open
Session
必须手动关闭。 这里getCurrent
Session
本地事务(本
Web 开发
81,092
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章