避免重复加载

场景:【高分】【紧急】【】hibernate怎么避免重复加载配置文件,多谢

【高分】【紧急】【在线等】hibernate如何避免重复加载配置文件,谢谢~
Java code
 2008 十月 28 23:45:00,317 [INFO] org.hibernate.cfg.Environment - Hibernate 3.3.1.GA 
2008 十月 28 23:45:00,332 [INFO] org.hibernate.cfg.Environment - hibernate.properties not found
2008 十月 28 23:45:00,332 [INFO] org.hibernate.cfg.Environment - Bytecode provider name : javassist
2008 十月 28 23:45:00,348 [INFO] org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
2008 十月 28 23:45:00,551 [INFO] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
2008 十月 28 23:45:00,551 [INFO] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
2008 十月 28 23:45:00,770 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AdminPower.hbm.xml
2008 十月 28 23:45:00,973 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AdminPower -> admin_power
2008 十月 28 23:45:01,082 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/Airport.hbm.xml
2008 十月 28 23:45:01,129 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.Airport -> airports
2008 十月 28 23:45:01,129 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/Album.hbm.xml
2008 十月 28 23:45:01,160 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.Album -> albums
2008 十月 28 23:45:01,176 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AlbumPhoto.hbm.xml
2008 十月 28 23:45:01,239 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AlbumPhoto -> album_photos
2008 十月 28 23:45:01,285 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AlbumUser.hbm.xml
2008 十月 28 23:45:01,317 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AlbumUser -> album_users
2008 十月 28 23:45:01,317 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/Aod.hbm.xml
2008 十月 28 23:45:01,348 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.Aod -> aod
2008 十月 28 23:45:01,379 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AodSort.hbm.xml
2008 十月 28 23:45:01,551 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AodSort -> aod_sorts
2008 十月 28 23:45:01,582 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/Attachment.hbm.xml
2008 十月 28 23:45:01,614 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.Attachment -> attachments
2008 十月 28 23:45:01,629 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/Blog.hbm.xml
[color=#FF0000]============================.hbm.xml的列表还没加载完毕,hibernate.cfg.xml又重新开始加载了[/color]
2008 十月 28 23:45:01,832 [INFO] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
2008 十月 28 23:45:01,832 [INFO] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
2008 十月 28 23:45:01,864 [INFO] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
2008 十月 28 23:45:01,864 [INFO] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
2008 十月 28 23:45:01,895 [ERROR] org.apache.catalina.core.ContainerBase.[Catalina].[www.javafeng.cn].[/] - Session event listener threw exception
java.lang.NullPointerException
at cn.hlgc.util.HibernateUtil.beginTransaction(HibernateUtil.java:106)
at cn.hlgc.stat.OnlineListener.sessionDestroyed(OnlineListener.java:70)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:687)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:579)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:678)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:663)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1284)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
at java.lang.Thread.run(Thread.java:619)
[color=#FF0000]2008 十月 28 23:50:00,020 [INFO] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
2008 十月 28 23:50:00,020 [INFO] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
2008 十月 28 23:50:00,035 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AdminPower.hbm.xml
2008 十月 28 23:50:00,082 [INFO] org.hibernate.cfg.Mappings - duplicate import: cn.hlgc.hibernate.AdminPower->cn.hlgc.hibernate.AdminPower
2008 十月 28 23:50:00,082 [INFO] org.hibernate.cfg.Mappings - duplicate import: cn.hlgc.hibernate.AdminPower->AdminPower[/color]
2008 十月 28 23:50:00,082 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AdminPower -> admin_power
2008 十月 28 23:50:00,098 [INFO] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
2008 十月 28 23:50:00,098 [INFO] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
2008 十月 28 23:50:00,098 [INFO] org.hibernate.cfg.Configuration - Reading mappings from resource : cn/hlgc/hibernate/AdminPower.hbm.xml
2008 十月 28 23:50:00,145 [INFO] org.hibernate.cfg.Mappings - duplicate import: cn.hlgc.hibernate.AdminPower->cn.hlgc.hibernate.AdminPower
2008 十月 28 23:50:00,145 [INFO] org.hibernate.cfg.Mappings - duplicate import: cn.hlgc.hibernate.AdminPower->AdminPower
2008 十月 28 23:50:00,145 [INFO] org.hibernate.cfg.HbmBinder - Mapping class: cn.hlgc.hibernate.AdminPower -> admin_power
2008 十月 28 23:50:00,145 [ERROR] org.quartz.core.JobRunShell - Job stat.updateStat threw an unhandled Exception:
java.lang.NullPointerException
at cn.hlgc.util.HibernateUtil.beginTransaction(HibernateUtil.java:106)
at cn.hlgc.stat.UpdateStat.execute(UpdateStat.java:216)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
2008 十月 28 23:50:00,145 [ERROR] org.quartz.core.ErrorLogger - Job (stat.updateStat threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NullPointerException]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: java.lang.NullPointerException
at cn.hlgc.util.HibernateUtil.beginTransaction(HibernateUtil.java:106)
at cn.hlgc.stat.UpdateStat.execute(UpdateStat.java:216)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 more


大家好,请看上面抛出的错误,在tomcat启动的时候,如果有取数据的访问,hibernate就会开始读取配置文件,连接数据库,但是如果在hibernate连接数据库的时候(比如正在读取配置文件,还没完成连接的时候),如果又有一个取数据的请求的话,hibernate就会在再次读取配置文件和连接数据库,这样就duplicate import了,请问如何才能解决这个问题,就是在hibernate还没完成连接的时候不再读取和连接数据库,应该如何设置,谢谢~感激~

------解决方案--------------------
将加载配置文件的语句放在static代码块中:
static{
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
}
------解决方案--------------------
把 buildSessionFactory 过程的方法加上同步关键字,这点很重要,也不影响性能,因为这具操作只需要执行一次。
------解决方案--------------------
探讨
引用:
将加载配置文件的语句放在static代码块中:
static{
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
}



Java code /**
* Rebuild hibernate session factory
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sess…