站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Hibernate 专题Web环境 Hibernate数据源问题补充

Web环境 Hibernate数据源问题补充

摘要: Web环境 Hibernate数据源问题补充 在Hibernate.cfg.xml中配置的数据源只能在Web环境下使用,我们可以通过下面的例子来比较. 如果我们在HibernateSessionFac...
Web环境 Hibernate数据源问题补充

  在Hibernate.cfg.xml中配置的数据源只能在Web环境下使用,我们可以通过下面的例子来比较.
  
  如果我们在HibernateSessionFactory中加上测试,代码如下:
  package sc.pro.forum.util;
  
  import net.sf.hibernate.HibernateException;
  import net.sf.hibernate.Session;
  import net.sf.hibernate.cfg.Configuration;
  
  /**
  * Configures and provides access to Hibernate sessions, tied to the
  * current thread of execution. Follows the Thread Local Session
  * pattern, see {@link http://hibernate.org/42.html}.
  */
  public class HibernateSessionFactory {
  
  /**
  * Location of hibernate.cfg.xml file.
  * NOTICE: Location should be on the classpath as Hibernate uses
  * #resourceAsStream style lookup for its configuration file. That
  * is place the config file in a Java package - the default location
  * is the default Java package.<br><br>
  * Examples: <br>
  * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml".
  * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code>
  */
  private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
  
  /** Holds a single instance of Session */
  private static final ThreadLocal threadLocal = new ThreadLocal();
  
  /** The single instance of hibernate configuration */
  private static final Configuration cfg = new Configuration();
  
  /** The single instance of hibernate SessionFactory */
  private static net.sf.hibernate.SessionFactory sessionFactory;
  
  /**
  * Returns the ThreadLocal Session instance. Lazy initialize
  * the <code>SessionFactory</code> if needed.
  *
  * @return Session
  * @throws HibernateException
  */
  public static Session currentSession() throws HibernateException {
  Session session = (Session) threadLocal.get();
  
  if (session == null) {
  if (sessionFactory == null) {
  try {
  cfg.configure(CONFIG_FILE_LOCATION);
  sessionFactory = cfg.buildSessionFactory();
  }
  catch (Exception e) {
  System.err.println("%%%% Error Creating SessionFactory %%%%");
  e.printStackTrace();
  }
  }
  session = sessionFactory.openSession();
  threadLocal.set(session);
  }
  
  return session;
  }
  
  /**
  * Close the single hibernate session instance.
  *
  * @throws HibernateException
  */
  public static void closeSession() throws HibernateException {
  Session session = (Session) threadLocal.get();
  threadLocal.set(null);
  
  if (session != null) {
  session.close();
  }
  }
  
  public static void main(String[] args){
  System.out.println("sdfsdfsd");
  try{
  Session session=HibernateSessionFactory.currentSession();
  if(session==null)
  System.out.println("session is null");
  else
  System.out.println("session is not null");
  }catch(Exception e){
  e.printStackTrace();
  }
  }
  
  /**
  * Default constructor.
  */
  private HibernateSessionFactory() {
  }
  
  }
  执行时,程序会给我们如下的错误:
  Environment - Hibernate 2.1.7
  Environment - hibernate.properties not found
  Environment - using CGLIB reflection optimizer
  Environment - using JDK 1.4 java.sql.Timestamp handling
  sdfsdfsd
  Configuration - configuring from resource: /hibernate.cfg.xml
  Configuration - Configuration resource: /hibernate.cfg.xml
  DTDEntityResolver - trying to locate http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd in classpath under net/sf/hibernate/
  DTDEntityResolver - found http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd in classpath
  Configuration - connection.datasource=java:comp/env/jdbc/forum
  Configuration - show_sql=true
  Configuration - dialect=net.sf.hibernate.dialect.SQLServerDialect
  Configuration - null<-org.dom4j.tree.DefaultAttribute@18088c0 [Attribute: name resource value "sc/pro/forum/dao/Userinfo.hbm.xml"]
  Configuration - Mapping resource: sc/pro/forum/dao/Userinfo.hbm.xml
  DTDEntityResolver - trying to locate http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath under net/sf/hibernate/
  DTDEntityResolver - found http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath
  Binder - Mapping class: sc.pro.forum.dao.Userinfo -> UserInfo
  Binder - Mapped property: userid -> UserID, type: integer
  Binder - Mapped property: password -> password, type: string
  Binder - Mapped property: nickname -> nickname, type: string
  Configuration - Configured SessionFactory: null
  Configuration - properties: {java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, sun.boot.library.path=C:\Program Files\Java\j2re1.4.2_03\bin, java.vm.version=1.4.2_03-b02, connection.datasource=java:comp/env/jdbc/forum, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=CN, sun.os.patch.level=Service Pack 4, java.vm.specification.name=Java Virtual Machine Specification, user.dir=E:\86vr\forum, java.runtime.version=1.4.2_03-b02, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\j2re1.4.2_03\lib\endorsed, os.arch=x86, java.io.tmpdir=C:\DOCUME~1\zhangyi\LOCALS~1\Temp\, line.separator=
  , java.vm.specification.vendor=Sun Microsystems Inc., user.variant=, os.name=Windows 2000, sun.java2d.fontpath=, hibernate.connection.datasource=java:comp/env/jdbc/forum, java.library.path=C:\Program Files\Java\j2re1.4.2_03\bin;.;C:\WINNT\system32;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;d:\Program Files\cvsnt;D:\j2sdk1.4\bin;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\CVSNT\, java.specification.name=Java Platform API Specification, java.class.version=48.0, java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFactory, os.version=5.0, user.home=C:\Documents and Settings\zhangyi, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=GBK, java.specification.version=1.4, show_sql=true, user.name=zhangyi, java.class.path=E:\86vr\forum\WebRoot\WEB-INF\classes;E:\86vr\forum\WebRoot\WEB-INF\lib\ant-1.5.3.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\ant-optional-1.5.3.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\c3p0-0.8.4.5.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\cglib-full-2.0.2.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\commons-collections-2.1.1.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\commons-dbcp-1.2.1.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\commons-lang-1.0.1.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\commons-logging-1.0.4.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\commons-pool-1.2.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\concurrent-1.3.3.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\connector.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\dom4j-1.4.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\ehcache-0.9.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\hibernate2.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jaas.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jboss-cache.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jboss-common.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jboss-jmx.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jboss-system.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jcs-1.0-dev.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jdbc2_0-stdext.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jgroups-2.2.7.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\jta.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\junit-3.8.1.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\log4j-1.2.8.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\msbase.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\mssqlserver.jar;E:\86vr\forum\WebRoot\WEB-INF\lib\msuti


↑返回目录
前一篇: 了解Hibernate的FlushMode.NEVER模式
后一篇: Struts中用PlugIn扩展Hibernate的例子