| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 694 人关注过本帖
标题:[求助]请教应用hibernate的线程问题!
只看楼主 加入收藏
limo
Rank: 1
等 级:新手上路
帖 子:358
专家分:0
注 册:2005-7-26
收藏
 问题点数:0 回复次数:6 
[求助]请教应用hibernate的线程问题!

用myeclipse生成hibernate的时候,同时了这个类。


package com.jct.common.hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactory {


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.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;

public HibernateSessionFactory() {
}

public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();

if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}

return session;
}

public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}


public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);

if (session != null) {
session.close();
}
}


public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}


public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}


public static Configuration getConfiguration() {
return configuration;
}

}

搜索更多相关主题的帖子: 线程 hibernate 应用 
2006-12-15 13:16
limo
Rank: 1
等 级:新手上路
帖 子:358
专家分:0
注 册:2005-7-26
收藏
得分:0 

HibernateSessionFactory 是一个线程
如果把每一个表对应一个DAO的话,那么再这个程序中,我写多个DAO的会不会成为一个多线程?
JctCtyDAO.class,JctCttDao.class(如果每次只操纵HibernateSessionFactory 话,肯定是一个现成。但现在我用两个不同的类继承了他,会不会产生2个Thread?)

public class JctCtyDAO extends HibernateSessionFactory {
public boolean insert(JctCty cty){
Session session = super.getSession();
Transaction ts = session.beginTransaction();
session.save(cty);
session.flush();
ts.commit();
return true;
}
}
___________

public class JctCttDAO extends HibernateSessionFactory {
public boolean insert(JctCtt ctt){
Session session = super.getSession();
Transaction ts = session.beginTransaction();
session.save(ctt);
session.flush();
ts.commit();
return true;
}
}

[此贴子已经被作者于2006-12-15 13:22:04编辑过]


此人无我相、无人相、无众生相、无寿者相,所以者何?离一切相,则名“诸佛”。
2006-12-15 13:21
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
首先你的知道你为什么那么做!
之所以用工厂方法的原因之一就是想只实例话一个。

[此贴子已经被作者于2006-12-15 13:39:14编辑过]


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-15 13:38
limo
Rank: 1
等 级:新手上路
帖 子:358
专家分:0
注 册:2005-7-26
收藏
得分:0 

这样产生的线程是几个?2个?1个?

[此贴子已经被作者于2006-12-15 14:03:19编辑过]


此人无我相、无人相、无众生相、无寿者相,所以者何?离一切相,则名“诸佛”。
2006-12-15 13:58
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 

不知道你说的线程是什么意思,这个线程有什么关系?


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-15 15:33
禹_二
Rank: 1
等 级:新手上路
帖 子:661
专家分:0
注 册:2006-9-13
收藏
得分:0 
不懂!!

2006-12-15 22:07
十一文
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2006-4-27
收藏
得分:0 
好象
不会

Hibernate是线程安全的

你只要不用Thread就应该不会产生新线程

2006-12-16 16:05
快速回复:[求助]请教应用hibernate的线程问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020238 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved