在Hibernate5.0这个版本和4又不同了
这是4的获取Session的工厂:
//1. 解析我们在hibernate.cfg.xml中的配置//
Configuration configuration = new Configuration().configure();
//2. 创建服务注册类,进一步注册初始化我们配置文件中的属性//
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
//3. 创建我们的数据库访问会话工厂//
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
但是在5中又做了改动:
//1. 配置类型安全的准服务注册类,这是当前应用的单例对象,不作修改,所以声明为final
//在configure("cfg/hibernate.cfg.xml")方法中,如果不指定资源路径,默认在类路径下寻找名为hibernate.cfg.xml的文件
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("cfg/hibernate.cfg.xml").build();
//2. 根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂
SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
这次的改动我想是为了解决效率和资源的竞争问题,
后面的都没有大的变化,都是:
Session session = sessionFactouy.openSession(); 获得session
session.beginTransaction(); 开始一次事务
session.xxxxxx(); 事务的操作
sesssion.getTransaction().commit(); 提交事务
session.getTransaction().rollback(); 失败回滚
session.close();