最近在一边看视频学习这个框架,一遍对着视频开始敲代码,达到学以致用的地步,可就是这么一个问题,使我纠结了一小时。
俗话说的好,眼过千遍,不如手过一遍,以后遇到问题都会随手解决并记录在案的,为了自己以后不再犯错。
Configuration详解:
//默认读取src下hibernate.properties文件 不推荐使用这种方法
//Configuration cfg = new Configuration();
//新建Configuration对象 这个方法默认读取hibernate.cfg.xml
Configuration cfg = new Configuration().configure();
//补充:
//Configuration cfg1 = new Configuration().configure("可以自己指定文件名");
通过Configuration对象创建SessionFactory对象
hibernate4中的写法,主要还是configure对象中用工厂模式来构建,很传统的模式。这样的写法在hibernate5中使用的话会出现标题的错误
//服务注册,这是使用创建者模式,根据配置文件中的配置字段来构建注册服务
ServiceRegistry registry = new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.build();
//使用实例化好了的注册服务,使用Configuration中的工厂模式实例化了
SessionFactory sf = cfg.buildSessionFactory(registry);
hibernate5中的写法, 全部修改为创建者模式,3条语句,3个创建。
//直接使用创建者模式构建出了标准服务注册对象
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
.configure().build();
//这个对象metadata对象应该扮演了一个万金油的角色,使用以上的注册对象作为入参构建这个对象
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder()
.applyImplicitNamingStrategy(
ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
//由metadata构建出SessionFactory
SessionFactory sf = metadata.getSessionFactoryBuilder().build();
因为在学习不同框架时不同版本中会有不同的实现方式,所以以后在学习中还是要特别关注版本之间的差异性,不要只是按着教程走,要真正的做到融会贯通才行,愿你我永无BUG!