创建sessionFactory

A 在3.6.8版本中,可以直接用
SessionFactory sf = new Configuration()
    .configure()    //    直接用hibernate.cfg.xml来进行配置和创建
    .buildSessionFactory();

B 在4.0.0版本中,因Configuration().configure()方法被废除了,
故用以下方式来创建
Configuration config = new Configuration()
            .addResource("org/monday/domain/Customer.hbm.xml");
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
            .buildServiceRegistry();
SessionFactory sf = config.buildSessionFactory(serviceRegistry);

在此方法中默认使用hibernate.properties文件来进行配置,而hibernate.properties文件中不能添加映射文件(.hbm.xml),所以只能用.addResource("org/monday/domain/Customer.hbm.xml")来添加映射文件,这里必须是全路径。

使用如下方法时,读取hibernate.cfg.xml时会出错(找不到元素 'hibernate-configuration' 的声明)
Unable to perform unmarshalling at line number 4 and column 26 in RESOURCE hibernate.cfg.xml
可能是这个版本对DTD不识别,或者是方法运用错误。
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
                .configure()    //想通过这个来读取hibernate.cfg.xml来进行配置
                .buildServiceRegistry();
SessionFactory sf = new MetadataSources( serviceRegistry )            
            .buildMetadata()
            .buildSessionFactory();

C 在4.0及以上版本中,用hibernate.cfg.xml来创建sessionFactory的方法
         private static final SessionFactory sessionFactory = buildSessionFactory();
                private static ServiceRegistry serviceRegistry;   
                Configuration configuration = new Configuration();
                configuration.configure();
                serviceRegistry = new ServiceRegistryBuilder().applySettings(
                                configuration.getProperties()).buildServiceRegistry();
                return configuration.buildSessionFactory(serviceRegistry);

posted @ 2012-01-29 13:06  lastren  阅读(1802)  评论(0编辑  收藏  举报