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. python 函数map()、filter()、reduce()

    map()函数    将一个列表进行遍历,对每一个字符串进行处理: 例如: num_list = ["我","是","哈哈","太 ...

  2. Lesson 7 Bats

    In what way does echo-location in bats play a utilitarian role? Not all sounds made by animals serve ...

  3. 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead

    import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...

  4. git使用问题一新建本地仓库添加远程合并推送

    1,git远程新建仓库demo 2,git本地初始化仓库demo 3,git本地添加远程仓库 git remote add <name> <url> 4,git把远程仓库pul ...

  5. 微信公众号sdk

    微信公众号开发 能享用微信公众号的API,比如分享给好友,分享到朋友圈,禁止菜单功能,选择图片,获取地址,以及支付 微信的功能有两种执行方式 一种是 wx.xx 一种是 WeixinJSBridge. ...

  6. vue的MVVM

    Vue的相关知识有 字符串模板 MVVM 虚拟dom和domdiff,查看下一篇笔记 字符串模板 function render(template, data) { const reg = /\{\{ ...

  7. lpwizard 生成的 allegro 封装中 .psx 文件使用方法。

    lpwizard 有时候生成 allegro 封装的时候会生成 .psx 文件,这个文件其实是脚本文件,用于某些特殊形状焊盘的处理. 具体的使用方法如下: 在Allegro中,选择 File > ...

  8. Codeforces Round #611 (Div. 3)

    原题面:https://codeforces.com/contest/1283 A.Minutes Before the New Year 题目大意:给定时间,问距离零点零分还有多久? 分析:注意一下 ...

  9. Window Server 2019 配置篇(6)- 利用组策略实现域内自动安装软件

    上次我们建立了WSUS实现了更新管理,那么现在我们需要的是让集群内的客户机(之后会建立在hyper-v集群上)和服务器都能装上三个软件 1. Microsoft Team 2. Notepad++ 3 ...

  10. Docker自建本地仓库

    1.安装docker yum install docker -y 之后根据需求把指定docker安装目录,或者新建一个磁盘使用docker-storage-setup来使用 2.设置第三方docker ...