创建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);