在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
|