SessionFactory在Hibnernate都需要通过单例模式来获取,但4.0与之前版本他们获取的方法有很大的不同之处。
4.0之前获取SessionFactory的方法相对非常简单,直接读取配置文件,再由读取配置文件的方法直接产生。具体代码如下:
Configuration cfg=new Configuration().configure();(ps:configure后面括号里面的内容可以去掉不写,但前提是需要在同一个src下面,并且指定的classpath路径必须相同否则就必须写)
SessionFactory sessionFactory=cfg.buildSessionFactory();
4.0之后获取SessionFactory的方法相对来说比较复杂,主要是hibernate增加了一注册机ServiceRegistryBuilder 类,获取SessionFactory的流程就发生了变化。首先也需要读取配置文件,然后新建一个注册机,需要生成的SessionFactory需要先经过注册机注册一下才能使用,注册完了之后才用读取配置文件的方法产生。具体代码如下:
Configuration cfg=new Configuration().configure();
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry);
总的来说就是在原来的两步之间加了一步注册,其他的没有什么不同。