1):Configuration配置对象

Configuration用于加载配置文件。

1): 调用configure()方法,加载src下的hibernate.cfg.xml文件

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

2):如果配置文件不符合默认的加载规则,我们可以用:

    new Configuration().configure(file);  //通过file加载

    new Configuration().configure(path);  //通过路径加载

3): 通过Configuration对象加载映射文件(不推荐,一般都将*hbm.xml映射文件配置到hibernate.cfg.xml中)

    conf.addClass(User.class);

规范:1、orm映射文件名称应与实体的简单类名一致;

2、orm映射文件需要与实体的类在同一包下。

2):SessionFactory工厂

SessionFactory相当于javaWeb的连接池,用于管理所有的session

根据Configuration配置信息创建SessionFactory

SessionFactory sf = conf.buildSessionFactory();

SessionFactory是线程安全的,可以是成员变量,多个线程同时访问时,不会出现线程并发的问题。

3):Session会话

Session相当于JDBC的Connection会话,通过操作session操作PO对象实现增删改查

session的api:

1、save  保存

2、update  更新

3、delete  删除

4、get 通过id查询,如果没有null

load通过id查询,如果没有抛异常

5、createQuery("hql")   获得Query对象

6、createCriteria(Class)  获得Criteria对象

session是单线程,线程不安全,不能编写成员变量。

4):Transaction事务

打开事务: Transaction ts = session.beginTransaction();

获得事务(已经打开的事务对象):session.getTransaction();

提交事务:commit();

回滚事务:rollback();

5):Query对象

Qyuery主要用于Hibernate执行hql语句。

hql语句:hibernate提供的面向对象的查询语句,使用对象(类)和属性进行查询,区分大小写。

获得Query对象:Query query = session.createQuery("hql")

方法:

list():查询所有    List<User> list = query.list();

uniqueResult():获得一个结果

setFirstResult(int):分页,开始索引数startIndex

setMaxResult(int):分页,每页显示的个数pageSize

6):工具类

package com.zju.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; //工具类
public class H3Utils { // 会话工厂,整个程序只有一份
private static SessionFactory factory; // 放在静态块里
static {
// 1 加载配置文件
Configuration conf = new Configuration().configure();
// 2 获得工厂
factory = conf.buildSessionFactory();
// 3 关闭虚拟机时,释放SessionFactory
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override
public void run() {
System.out.println("虚拟机关闭,释放资源!");
factory.close();
}
}));
} // 获得一个新的session
public static Session openSession() {
return factory.openSession();
} //获得当前线程中绑定的session
public static Session getCurrentSession(){
return factory.getCurrentSession();
}
}

分享知识-快乐自己:Hibernate框架常用API详解的更多相关文章

  1. hibernate常用API详解

    根据个人使用Hibernate的经验,介绍一下Hibernate的多种不同的查询和CUD操作,这些东西在日常开发中非常常用,希望对大家有所帮助. 以下示例均以两张表为例:member和userinfo ...

  2. Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢

    新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...

  3. 分享知识-快乐自己:Java常用API总结

    1):java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileReader FileR ...

  4. Selenium常用API详解介绍

    转至元数据结尾   由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始   一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制 ...

  5. [总结]JS操作DOM常用API详解

    文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...

  6. Hibernate框架之Criteria 详解

    自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询.有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖 ...

  7. 分享知识-快乐自己:Spring_IOC(控制反转)详解

    IoC是什么: 1):Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 2):在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的 ...

  8. 分享知识-快乐自己:oracle表分区详解

    从以下几个方面来整理关于分区表的概念及操作: 1)表空间及分区表的概念: 2)表分区的具体作用: 3)表分区的优缺点: 4)表分区的几种类型及操作方法: 5)对表分区的维护性操作: 1):表空间及分区 ...

  9. hibernate学习(2)——api详解对象

    1   Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...

随机推荐

  1. vue2.X 自定义 侧滑菜单 组件

    1.vue2.0 封装 侧滑菜单组件 Sidebar.vue <!-- 侧滑菜单 组件 --> <template> <div> <transition na ...

  2. 又一次认识java(九) ---- 内部类

    注意注意!! ! 前排提示!!.本篇文章过长,最好收藏下来慢慢看.假设你之前对内部类不是非常熟悉,一次性看完,大概你会懵逼. . . 1. 内部类概述 一个类的定义放在还有一个类的内部,这个类就叫做内 ...

  3. java将一个或者多个空格进行分割

    public static void main(String[] args) { String s = "GET /index.html HTTP/1.1";//字符串s由“GET ...

  4. 为什么我们有时不用配置java环境变量?

    答案都在这个图中 完毕,如果还不懂请自行查询注册表相关内容学习.

  5. 生成二维码(jquery.qrcode.min.js插件)

    生成二维码:参看GitHub资源https://github.com/jeromeetienne/jquery-qrcode 直接上代码:(都需要引入jQuery.js  1.引入(jquery.qr ...

  6. g2o 初始化

    typedef g2o::BlockSolver< g2o::BlockSolverTraits<,> > Block; // pose 维度为 6, landmark 维度为 ...

  7. nodejs 简单的备份github代码初版

    传送门:http://www.jianshu.com/p/002efed0d3af 我的代码: const https = require('https'); const fs = require(& ...

  8. 产生N个不重复的随机数的快速算法

    //seed array ,,,,,,,,,}; //随机数个数 ; //结果存放在里面 ]; ; i < N; i++) { //从剩下的随机数里生成 , startArray.length ...

  9. ubuntu16.04下Cmake学习一

    根据网上的资料,我总结了一下,一个工程应该有根目录(bin)存放可执行文件,头文件目录(include)存放头文件,源码文件(src)存放你的算法,还需要一个库文件夹存放你编译的静态库或者动态库.然后 ...

  10. java从apk文件获取包名、版本号、icon

    依赖:仅依赖aapt.exe 支持:仅限windows 功能:用纯java获取apk文集里的包名,版本号,图标文件[可获取到流直接保存到文件系统] 原理:比较上一篇文章里通过反编译然后解析Androi ...