Hibernate 配置详解

HelloHibernate详解

1、  Configuration管理读取配置文件

//读取srchibernate.properties,不推荐使用

Configuration cfg = new Configuration();

//如果hibernate的核心配置文件不叫 hibernate.cfg.xml

Configuration cfg1 = new Configuration().configure("hb.cfg.xml");

//可编程式  可以不使用配置文件

//cfg.addProperties();

//cfg.addResource()

Configuration在一个应用中,最好写一个。通过configuration来创建SessionFactory对象

2、  SessionFactory对象:是一个session工厂。是一个重量级对象。在一个应用中最好也是单列的。是一个线程安全的。属于进程级别的对象。

//2.通过Configuration创建SessionFactory对象

         //hibernate3.x中是这种写法

         //SessionFactory sf = cfg.buildSessionFactory();

      //hibernate4.3之前~hibernate4.0

//    ServiceRegistry sr = new ServiceRegistryBuilder()

//                    .applySettings(cfg.getProperties())

//                    .buildServiceRegistry();

      //hibernate4.3

      ServiceRegistry registry = new StandardServiceRegistryBuilder()

                      .applySettings(cfg.getProperties())

                      .build();

      SessionFactory sf = cfg.buildSessionFactory(registry);

3、  Session对象:使用hibernate进行数据库操作,主要使用session。Session可以理解为对Connection对象的一个包装。Session对象中提供了对数据库的crud操作。Session是一个线程不安全的对象。生命周期非常短暂,一般和事务一一对应。Session又称为hibernate中的一级缓存。Session又是transaction对象的工厂。

4、  Transaction对象:事务管理对象。通过session来获取到该对象。包括了事务的开启,事务的提交,事务的回滚。

//第一种写法

      Transaction tx = session.beginTransaction();

      //第二种写法

      Transaction tran = session.getTransaction();

      tran.begin();

事务和异常处理:

publicstaticvoid main(String[] args) {

      Configuration cfg = null;

      SessionFactory sf = null;

      Session session = null;

      Transaction tx = null;

      try{

         cfg = new Configuration().configure();

         ServiceRegistry registry = new StandardServiceRegistryBuilder()

                         .applySettings(cfg.getProperties())

                         .build();

         sf = cfg.buildSessionFactory(registry);

         session = sf.openSession();

         tx = session.beginTransaction();

         User u  = (User)session.get(User.class, 2);

         System.out.println("name="+u.getName());

         //6.提交事务

         tx.commit();

      }catch (Exception e) {

         e.printStackTrace();

         //回滚事务

         tx.rollback();

      }finally{

         //7.关闭session

         if(session!=null&&session.isOpen())

         session.close();

      }

   }

5、Query对象:条件查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胖墩有点瘦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值