博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java三大框架之——Hibernate
阅读量:6237 次
发布时间:2019-06-22

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

什么是Hibernate?

  是基于ORM(O:对象,R:关系,M:映射)映射的持久层框架,是一个封装JDBC的轻量级框架,主要实现了对数据库的操作。

  注:CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。

 

Hibernate中的核心接口和类

  Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心类和接口在任何开发中都会用到。通过这些,不仅可以对持久化对象进行存取,还能够进行事务控制。

  Session接口:负责对象的持久化操作,但需要注意的是它非的。

  SessionFactory接口:负责Hibernate的初始化操作,数据存储的代理对象,并且负责创建Session对象,

  Transaction接口:负责数据的事务操作。

  Query接口:负责数据库及持久化对象的查询操作,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

  Criteria接口:Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。

  Configuration类:Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。

 

Hibernate的工作流程:

   工作流程图:  

        

 Hibernate持久化操作的七个步骤:

  1.创建Configuration对象,并加载cfg.xml配置文件;(配置文件可以通过Eclipse自动生成)

  2.通过Configuration对象构建SessionFactory工厂;

  3.通过SessionFactory工厂打开一个Session会话;

  4.开启事务;(查询方法可省略)

  5.用Session会话进行数据库及持久化对象的CRUD操作;

  6.提交事务;(查询方法可省略)

  7.关闭会话;

        代码如下:

import java.util.List;import org.hibernate.Criteria;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.criterion.Restrictions;public class HibernateTest {    public void Test(){        //创建Configurtion对象并加载cfg.xml配置文件        Configuration conf = new Configuration().configure("hibernate.cfg.xml");        //构建SessionFactory工厂        SessionFactory sessionFactory = conf.buildSessionFactory();        //打开Session会话        Session session = sessionFactory.openSession();        //开启事务(增删改)需要开启事务 查询可以不用开启事务        Transaction transaction = session.beginTransaction();                //创建Users类对象        Users users = new Users();                /**         * Session中封装的几个常用的方法         */        //调用Session中添加的方法        session.save(users);        //调用Session中删除的方法        session.delete(users);        //调用Session中修改的方法        session.update(users);        //调用Session中根据主键查询某个类的方法        session.get(Users.class,users.getId());                        //根据HQL语句查询        String hql = "from Users";        Query query = session.createQuery(hql);        List
userList = query.list(); //根据SQL语句查询 String sql = "select * from Users"; SQLQuery sqlQuery = session.createSQLQuery(sql); List
sqlUsersList = sqlQuery.list(); //根据你给的Bean.class类来指定查询哪个类 Criteria criteria = session.createCriteria(Users.class); //用Criteria对象来添加条件(括号中用Restrictions对象来选择你要添加哪一种条件) criteria.add(Restrictions.ilike("name", "华盛顿%")); /** * 提交事务后将对数据库进行增删改查操作 * 可以通过条件判断来确定是否提交事务 * 例如: * 如果程序运行正常提交事务 * 否则让事务回滚 * 回滚后将不对数据库进行操作 * 事务的回滚: transaction.rollback(); */ //提交事务 transaction.commit(); //关闭Session会话释放资源 session.close(); } }

 

 

  

转载于:https://www.cnblogs.com/hcl22/p/6098579.html

你可能感兴趣的文章
Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率
查看>>
《App架构师实践指南》:移动开发的进阶指南
查看>>
C++参考的翻译或校对
查看>>
Jetty错误:java.lang.IllegalStateException: Form too large 270468>200000的问题解决
查看>>
Linux多线程2-1---创造新线程
查看>>
菜鸟学Linux 第001天笔记 基础理论知识
查看>>
Python学习(25)--面向对象编程2
查看>>
BLE Hacking:使用Ubertooth one扫描嗅探低功耗蓝牙
查看>>
JAVA入门[3]—Spring依赖注入
查看>>
开黑吗?VRstudio推出八人系统的VR线下竞技场
查看>>
备份和导入Outlook 2016 电子邮件签名
查看>>
自建企业网盘异军突起,“私人定制”优势面面观
查看>>
HttpUrlConnection发送url请求(后台springmvc)
查看>>
Win8.1 远程桌面 凭据无法工作
查看>>
如何HACK无线家用警报器?
查看>>
云栖科技评论第24期:美国军方拟与IBM合作建专有云
查看>>
Hadoop2.7实战v1.0之JVM参数调优
查看>>
100多个经典常用的jQuery插件大全实例演示和下载
查看>>
linux中top命令详解
查看>>
cgi fastcgi php-cgi php-fpm
查看>>