博客
关于我
Hibernate入门(二)——hibernateAPI详解
阅读量:413 次
发布时间:2019-03-06

本文共 2198 字,大约阅读时间需要 7 分钟。

Hibernate API 详解

1.Configuration

 功能:配置加载类,用于加载主配置,orm元数据加载

   .创建:

Configuration conf = new  Configuration();

   读取指定配置文件(加载主配置文件,即我们经常创建的"hibernate.cfg.xml")  

    从下图中可以发现有很多关于读取方法的重载。。。

    虽然有这么多重载,但是一般咱就用无参构造方法把,默认找到src下的hibernate.cfg.xml文件

    

conf.configure();

  当然可以在创建Configuration对象的时候直接执行:

  

Configuration conf = new  Configuration().configure();

 

    它们的源码如下:

 

2.SessionFactory

  功能:用于创建数据库核心对象session对象的工厂,简单的说,功能就只有一个-------------------创建session对象

    注意:

      1.sessionFactory负责保存和使用所有配置信息,消耗内存非常大

      2.sessionFactory属于线程安全的对象设计(不同的用户对应不同的session)

    结论:保证在web项目中,只创建一个sessionFactory

 读取完主配置文件(hibernate.cfg.xml)后自然要拿到SessionFactory    

SessionFactory sf = conf.buildSessionFactory();

 

3.session对象

  创建:

   ①:一个新的session对象

Session session = sf.openSession();

  ②:获得一个与线程绑定的session对象

Session cSession = sf.getCurrentSession();

      ①插入

        注意:

          增删改查操作之前要开启事务,结束后要提交事务

          最后要session释放资源(后面的操作我就不完整写了)

        拿到对象,直接用save方法就行了

Transaction tx = session.beginTransaction();        Customer customer = new Customer();        customer.setCust_id(2);      customer.setCust_name("测试");        session.save(customer);        tx.commit();     session.close();

      ②根据主键查询 

Customer customer = session.get(Customer.class, 2);

      ③修改

      拿到对象然后调用update方法()

Customer customer = session.get(Customer.class, 2);customer.setCust_name("测试2");session.update(customer);

      发现一个"插入或者修改" 

 

      ④删除

       首先拿到对象,然后调用delete()

Customer customer = session.get(Customer.class, 2);session.delete(customer);

 

4.自定义Hibernate工具类

   对于SessionFactory,提到最好只创建一个,其次就是封装重复代码,提高代码的复用性 

package deep.utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * Hibernate工具类 * @author DeepSleeping * */public class HibernateUtils {    private static SessionFactory sessionFactory;        static{        Configuration conf = new Configuration().configure();        sessionFactory = conf.buildSessionFactory();            }        public static Session getSession(){        return  sessionFactory.openSession();    }        public static Session getCurrentSession(){        return sessionFactory.getCurrentSession();    }}

 

 

  

  

转载地址:http://jyuuz.baihongyu.com/

你可能感兴趣的文章
深入解析 HTTP 缓存控制
查看>>
深入浅出访问者模式
查看>>
深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍
查看>>
百度前端技术学院task16源代码
查看>>
解析js中( ( ) { } ( ) )的含义
查看>>
js设计模式总结5
查看>>
Python大神编程常用4大工具,你用过几个?
查看>>
一文带你了解图神经网络
查看>>
9个常用ES6特性归纳(一般用这些就够了)
查看>>
3D渲染集群,你了解多少?
查看>>
除了方文山,用TA你也能帮周杰伦写歌词了
查看>>
关于GO语言,这篇文章讲的很明白
查看>>
华为云FusionInsight湖仓一体解决方案的前世今生
查看>>
大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
查看>>
C++调用Go方法的字符串传递问题及解决方案
查看>>
云原生2.0时代下,DevOps实践如何才能更加高效敏捷?
查看>>
技巧收藏|10个JavaScript常用数组操作方法
查看>>
两种端到端通用目标检测方法
查看>>
云小课 | 守护网络安全不是问题,iptables的四表五链为你开启“八卦阵”
查看>>
23种设计模式之迭代器模式
查看>>