1。当我们调用

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

时候Hibernate会自动在当前的CLASSPATH中搜寻hibernate.cfg.xml文件并将其读取到内存作为后继操作的基础配置。

我们也可以指定配置文件名,如果不希望使用默认的hibernate.cfg.xml文件作为配置文件的话:

SessionFactory

SessionFactory 负责创建Session的实例。我们可以通过Configuation实例创建SessionFactory;

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

SessionFactory sessionFactory=config.buildSessionFactory();

Configuration 实例config 会根据当前的配置信息,构造SessionFactory实例并返回。SessionFactory一旦构建完毕,即被赋予特定的配置信息。也就是说,之后config的任何变更将不会影响到已经创建的SessionFactory实例(SessionFactory)。如果需要使用基于改动后的config实例的SessionFactory,需要从config重新构建一个SessionFactory实例。

Session

Session 是持久层操作的基础,相当于JDBC中的Connnection。

Configuration config=new Configuration().configure();  //读取默认的hibernate.cfg.xml的文件

SessionFactory sessionFactory=config.buildSessionFactory();  //通过config创建sessionFactory的实例

Session session=sessionFactory.openSession();       //获得session

之后,我们就可以调用Session所提供的save,find,flush等方法完成持久化操作:

看例Save:

TUser user=new TUser();

user.setName("yuanliang");

session.save(user);

session.flush();//Session.flush方法强制数据库同步,这里既强制Hibernate将user实例立即同步到数据库中。在事物提交的时候和Session关闭的时候,也会自动执行flush方法

find()//这个方法返回一个List

List list=Session.find(From TUser as tu order by tu.name asc);

Load() //这个方法返回是一个对象

Customer c=(Customer)session.load(Customer.class,customer_id);

修改数据:

1. 将要修改的数据从数据库读出,赋值给表对应的持久化类

Query query = session.createQuery("from User as u where list = query.list();
 User usr = (User)list.get(0);

2. 对得到的持久化对象进行修改
 usr.setUsername("Look");
3. 启动事务管理
   Transaction ts = session.beginTransaction();

4. 将赋值后的持久化对象提交给session
  
 session.save(usr);
5. 结束事务管理并向数据库提交
 ts.commit();

-------------------------------
public void update(){
  
  Integer Integer(2);
  Transaction ts = null;
  try {
   Session session = HibernateSessionFactory.currentSession();
   
   Query query = session.createQuery("from User as u where list = query.list();
   User usr = (User)list.get(0);
   usr.setUsername("Look");
   
   ts = session.beginTransaction();
   session.save(usr);
   
   ts.commit();
   
  } catch (HibernateException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   try {
    ts.rollback();
   } catch (HibernateException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
  }
 }

Hibernate 的SessionFactory的更多相关文章

  1. Spring第12篇—— Spring对Hibernate的SessionFactory的集成功能

    由于Spring和Hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心 ...

  2. JPA EntityManagerFactory Vs Hibernate’s SessionFactory

    JPA使用EntityManagerFactory开闭session,而Hibernate使用SessionFactory开闭session.两者区别: 1. EntityManagerFactory ...

  3. 不同版本Hibernate.获取SessionFactory的方式

    不同版本Hibernate.获取SessionFactory的方式 Hibernate 版本说明: 我当前使用的是 Hibernate 5.x ,(hibernate-release-5.3.6.Fi ...

  4. 8 -- 深入使用Spring -- 8...2 管理Hibernate的SessionFactory

    8.8.2 管理Hibernate的SessionFactory 当通过Hibernate进行持久层访问时,必须先获得SessionFactory对象,它是单个数据库映射关系编译后的内存镜像.在大部分 ...

  5. hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别

    1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而ope ...

  6. hibernate - Initial SessionFactory creation failed.org.hibernate.HibernateException

    对于数据库字段映射, 被映射的字段除了提供 getter方法之外, 还需要提供setter方法. 这也是java bean的一些规范. 例如, 题目中的异常 Initial SessionFactor ...

  7. springboot 获取hibernate 的 SessionFactory

    注入bean package cn.xiaojf; import cn.xiaojf.today.data.rdb.repository.RdbCommonRepositoryImpl; import ...

  8. 浅谈hibernate的sessionFactory和session

    一.hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hiber ...

  9. 十八、springboot中hibernate配置sessionFactory访问数据库

    前提 在yml或properties文件中配置数据库与数据库连接池 Hibernate配置 几种方式: 方式一: @Configuration public class HibernateConfig ...

  10. spring配置hibernate的sessionFactory

    1.首先通过dataSource来配置sessionFactory <!--读入配置文件 --> <bean id="propertyConfigurer" cl ...

随机推荐

  1. 02.python实现排序算法

    一.列表排序 将无序列表变为有序列表 应用场景: 榜单,表格, 给二分查找用,给其他算法用 二.python实现三种简单排序算法 时间复杂度O(n^2), 空间O(1) 1.冒泡排序 思路: 列表每两 ...

  2. WCF 学习

    https://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html using System.ServiceModel; name ...

  3. springboot中文官方文档

    springboot中文官方文档 https://www.breakyizhan.com/springboot/3028.html spring框架 https://www.breakyizhan.c ...

  4. js取值问题----key为数字

    今天远程调用一个接口在处理返回的数据的时候突然发现数组的Key是一个数字 然后如果继续用“.”的话是不会的,会报错 要用中括号就可以解决

  5. stm32串口收发导致的死机

    stm32串口收发导致的死机 很久以前有偶尔遇到过串口死机的情况,那是当时的我写出来的代码自己都觉得有问题,也就没注意.用了stm32做项目以后也就没遇到过了,今天做了个高压测试,每5ms定时发送一次 ...

  6. nodejs配置 https服务

    const port = normalizePort(process.env.PORT || '3000'); const path = require('path'); const https =  ...

  7. Java笔记: 初始化块

    Java语言提供了很多类初始化的方法,包括构造器.初始化器等.除了这两种方法之外,我们还可以用初始化块(initialization block)来实现初始化功能. 基本语法 初始化块是出现在类声明中 ...

  8. 记一次 springboot 参数解析 bug调试 HandlerMethodArgumentResolver

    情况描述 前端输入框输入中文的横线 -- ,到后台接收时变成了 &madsh;$mdash 正常应该显示成这样: bug调试思路记录 最开始完全没有向调试源码方面想,试了不少方法,都没解决,没 ...

  9. 2 JVM 运行机制

  10. 吴裕雄--天生自然java开发常用类库学习笔记:大数操作

    import java.math.* ; class MyMath{ public static double add(double d1,double d2){ // 进行加法计算 BigDecim ...