Configuration类

该类主要是读取配置文件,启动hibernate,并负责管理hibernate的配置信息,一个程序只创建一个Configuration对象。

Configuration类操作方法

创建Configuration类

Configuration config = new Configuration().getconfigure();

  调用该方法后会自动查找默认hibernate.cfg.xml文件

如果想指定目录下自定义的

<!--创建File对象-->
File file = new File(路径);
Configuration config =new Configuration().configure(file);

  还可以用于创建SessionFactory对象(后面写)

加载多个XML文件

Configuration config = new Configuration().addResource(xml文件);//加载多继续写.addResource

  调用setProperty方法实现动态配置属性值

SessionFactory接口

hibernate初始化,主要是生成session对象,而且一个程序只有一个SessionFactory

创建SessionFactory

Configuration config = new Configuration().getconfigure();
SessionFactory sessionFactory = config。buildSessionFactory();

  SessionFactory相关配置(主要是数据库配置,下面列出一些,也就是hibernate.cfg.xml配置文件)

    <session-factory>
<!-- 配置数据库方言 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 配置数据库连接URL -->
<property name="connection.url">
jdbc:mysql://localhost:3306/user
</property>
<!-- 配置数据库用户名 -->
<property name="connection.username">root</property>
<!-- 配置数据库密码 -->
<property name="connection.password">123456</property>
<!-- 配置数据库JDBC驱动 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property> <property name="myeclipse.connection.profile">driver</property>
<!-- 底部输出sql语句 -->
<property name="show_sql">true</property>
<!-- 底部输出sql语句格式化 -->
<property name="hibernate.format_sql">true</property> <!-- 把配置文件导入核心文件 ,后面会写到 -->
<mapping resource="cn/dto/User.hbm.xml" /> </session-factory>

  ps:Session是否是线程安全的http://blog.sina.com.cn/s/blog_72c948d701017yb5.html

Session接口

创建seesion

Session session = sessionFacctory.openSession();

生命周期:以Transaction对象(事务)的事务开始和结束为边界

seesion对象提供了一系列与持久化相关操作。

save()方法

将对象加入缓存中,同时标注为持久态(持久态,托管态,瞬时态)

根据映射文件中配置信息生成实体类对象的唯一标识

生成计划执行的insert语句(但并不会执行insert语句,要等事务提交后)

具体用法:

User user =new User();
user.setUsername("durui"); //瞬时态
Session session = sessionFacctory.openSession(); //托管态
Transaction tx = session .beginTransaction();//开启事物
session.save(user) //持久态
tx.commit();//提交事务
session.close();

  update()方法

将对象加入缓存中,同时标注为持久态

生成计划执行的update语句

User user =new User();
user.setUsername("durui");
Session session = sessionFacctory.openSession();
Transaction tx = session .beginTransaction();//开启事物
session.update(user)
tx.commit();//提交事务
session.close();

  saveOrUpdate()方法

可以根据不同情况对数据库执行insert或者update操作

delete()对象

删除实例所对应的数据库记录(必须设置主键)

User user =new User();
user.setId("1");
Session session = sessionFacctory.openSession();
Transaction tx = session .beginTransaction();//开启事物
session.delete(user)
tx.commit();//提交事务
session.close();

  get()方法

通过标识符得到指定类的持久化对象,若没有返回空

Session session = sessionFacctory.openSession();
Transaction tx = session .beginTransaction();//开启事物
User user = (User)session.get(User.class,"1");//强制转换
system.out.println(user.getId());
tx.commit();
seesion.close();

  load()方法

和get()方法一样,但对象必须存在,否则产生异常

  contains()方法

判断一个实例是否与当前的session对象相关,也可以判断是否为持久态

  evict()方法

管理session缓存

  clear()方法

清空session的缓存

  createQuery()方法(下节)

用于建立Query查询接口实例

Query query = session。createQuery();

  createCriteria()方法(下节)

建立Criteria查询接口的实例

Criteria crit = seesion.createCriteria();

  createSQLQuery()方法

从字面意思就知道是sql查询

List users = session。createSQLQuery(sql语句)。list();

  createFilter()方法

用于一个持久化集合或者数组特殊查询

Hibernate学习笔记(4)---hibernate的核心接口的更多相关文章

  1. hibernate学习笔记之一 hibernate简介

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架 hibernate可以自动生成SQL语句,自 ...

  2. hibernate学习笔记之四 Hibernate的增删改查

    采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...

  3. Hibernate学习笔记(六) — Hibernate的二级缓存

    我们知道hibernate的一级缓存是将数据缓存到了session中从而降低与数据库的交互.那么二级缓存呢? 一.应用场合 比方.在12306购票时.须要选择出发地与目的地,假设每点一次都与数据库交互 ...

  4. Hibernate学习笔记(6)---Criteria接口

    Criteria接口 Criteria查询通过面相对向的设计,将数据查询条件封装为一个对象.在hibernate执行时会把criteria指定的查询恢复相应的sql语句. 条件查询 Criteria ...

  5. Hibernate学习笔记(5)---Query接口

    Hibernate中具有三种检索方式(HQL,QBC,SQL) Query接口 一个查询接口,用于向数据库中查询对象.并控制执行查询的过程.Query接口内封装了一个HQL查询语句. 举个栗子 //查 ...

  6. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  7. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  8. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  9. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  10. Hibernate学习一:Hibernate注解CascadeType

    http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...

随机推荐

  1. .NET Core 快速入门教程

    .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...

  2. java 之 桥接模式(大话设计模式)

    桥接模式定义为:将抽象部分与它的实现部分分离,使它们都可以独立的变化. 第一次看设计模式的时候,不是很清楚这句话的意思,随着笔者的不断开发,发现有一种场景, 继承关系多了,不易于维护父类,而笔者认为桥 ...

  3. 【quickhybrid】H5和Native交互原理

    前言 Hybrid架构的核心就是JSBridge交互,而实现这个交互的前提是弄清楚H5和Native端的交互 本文主要介绍Native端(Android/iOS)和H5端(泛指前端)的交互原理 (之前 ...

  4. KMP算法具体解释

    这几天学习kmp算法,解决字符串的匹配问题.開始的时候都是用到BF算法,(BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配 ...

  5. poj 1860 Currency Exchange (SPFA、正权回路 bellman-ford)

    链接:poj 1860 题意:给定n中货币.以及它们之间的税率.A货币转化为B货币的公式为 B=(V-Cab)*Rab,当中V为A的货币量, 求货币S通过若干此转换,再转换为原本的货币时是否会添加 分 ...

  6. JAVA随笔篇一(Timer源代码分析和scheduleAtFixedRate的使用)

    写完了基础篇,想了非常久要不要去写进阶篇.去写JSP等等的用法.最后决定先不去写.由于自己并非JAVA方面的大牛.眼下也在边做边学,所以决定先将自己不懂的拿出来学并记下来. Timer是Java自带的 ...

  7. java_抽象类

    抽象类1,语法定义抽象类前使用abstract关键字修饰,则该类为抽象类2.应用场景(1)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法. (2)从多个 ...

  8. Struts2.5 伪静态的配置

    伪静态 伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息.或者还想运用动态脚本解决一些问题.不能用静态的方式来展示网站内容.但 ...

  9. NanUI文档 - 使用网页来设计整个窗口

    NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...

  10. 前端MVC Vue2学习总结(三)——模板语法、过滤器、计算属性、观察者、Class 与 Style 绑定

    Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...