疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Hibernate4中生成session的变化


 

  Hibernate用来获取配置文件的类是Configuration,若用Annotation的话就是AnnotationConfiguration类。

  例:Configurationconfig=newConfiguration();

  config.configure("hibernate.cfg.xml");//用configure()方法取得。

  //或者config.configure();不用加参数,因为只有需要一个//hibernate.cfg.xml在src路径下。Hibernate会自动匹配

  取得配置文件后:需要一个Session对象来操作数据库的存取。Session对象是有SessionFactory的对象来产生的。

  在4.0版本之前sessionFactory由取得配置文件的对象config.BuildSessionFactory();产生。

  SessionFactorysessionFactory=config.buildSessionFactory();

  再由sessionFactory.getCurrentSession();方法产生session。

  Sessionsession=sessionFactory.getCurrentSession();

  有了session对象之后就可以对数据库进行操作了。但hibernate的所有操作都是建立在事务之上的。所以session操作之前要先打开一个事务:

  session.beginTransaction();

  同理操作完之后要提交事务:

  session.getTransaction().commit();

  若出错。可回滚:

  session.getTransaction().roolback();(这两句可放在tyr{……}catch{……}语句里面)

  另外还要关闭session对象:

  session.close();

  升级到4.0之后取得session的方法有所改变,hibernate增加了一个注册机ServiceRegistryBuilder类。要先生成一个注册机对象,然后所有的生成SessionFactory的对象要象注册机注册一下再用。生成方法还是config.buildSessionFactory()方法,不过加了个注册机的参数。config.buildSessionFactory(ServiceRegistryregistry);

  具体方法如下:

  ServiceRegistryresgistry=newServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();

  SessionFactoryfactory=config.buildSessionFactory(resgistry);

  Sessionsession=factory.openSession();