SessionFactory的创建和Session的获得

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();

}

}

}

时间: 2024-10-21 20:26:16

SessionFactory的创建和Session的获得的相关文章

Hibernate SessionFactory的创建和session的获取

1,当我们调用 Configuration config=new Configuration().configure(); 时候Hibernate会自动在当前的CLASSPATH中搜寻hibernate.cfg.xml文件并将其读取到内存作为后继操作的基础配置. 我们也可以指定配置文件名,如果不希望使用默认的hibernate.cfg.xml文件作为配置文件的话: SessionFactory SessionFactory 负责创建Session的实例.我们可以通过Configuation实例创

sessionFactory的创建和四种查询方式

1,关于sessionFactory的创建 5.0版本之前,下面这种方式在5.0及之后,可能会出问题,建议修改为5.0之后的方式 // 实例化Configuration Configuration configuration = new Configuration(); // 加载hibernate.cfg.xml文件 configuration.configure("/hibernate.cfg.xml"); // 创建SessionFactory StandardServiceRe

hibernate中获得session的方式

his.getsession实际上是调用了父类中的方法获得session.使用spring管理hibernate的SessionFactory的时候,这个方法会从session池中拿出一session.这样做有可能有问题,就是超session池连接数的时候,spring无法自动的关闭session. 不推荐使用 this.getHibernateTemplate().getSessionFactory().getCurrentSession()从spring管理的sessionFactory中创

springMVC+spring+hibernate 框架整合实例

先说一下流程思路: 流程讲解1:首先访问会先定位到控制器.这就用到了过滤器配置文件"spring-mvc.xml".这个文件负责定义控制器的包路径.视图的格式等.其次从"控制器->service层->dao层",期间用的都是spring的依赖注入,所以就需要一个bean容器配置文件,将所有的"等待被注入的类"在xml文件里申明一下.这个xml文件就是"spring-beans.xml".之后,dao层要操作enti

getHibernateTemplate和getSession 区别, this.getHibernateTemplate().getSessionFactory().getCurrentSession()和OpenSession区别

SSH的项目中,使用getHibernateTemplate 与 getSession有什么的区别? 1.使用getSession()方法你只要继承 sessionFactory,而使用getHibernateTemplate()方法必须继承HibernateDaoSupport当然包括 sessionFactory,这点区别都不是特别重要的,下面这些区别就很重要了 2.getSession()方法是没有经过spring包装 的,spring会把最原始的session给你,在使用完之后必须自己调

ThreadLocal与Synchronized

package com.demo; import org.hibernate.HibernateException; import org.hibernate.classic.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public final class HibernateUtil { private static SessionFactory sessionFact

1SSH整合

Hibernate 3.5.5下载地址:https://sourceforge.net/projects/hibernate/files/hibernate3/3.5.5-Final 1整合Hibernate,struts2,spring2(Dao,Service,Action三层架构) Hibernate 3.5.5 + struts 2.1.8 + Spring 2.5.6 + apache-tomcat-7.0.22需要的包: 首先是struts 2.1.8需要的包,拷贝到WEB-INF/

[Hibernate系列—] 2. 创建SessionFactory 与 Session

Configuration 对象创建 要创建SessionFactory , 首先要创建Configuration 对象. 这个对象就是去读取hibernate 的一些配置信息. 默认状况下, hibernate会到 classPath 目录下加载hibernate.cfg.xml 文件. 这里延续上一篇的例子: [Hibernate系列-] 1. 下载与试用Hibernate(MySQL与Oracle 配置) 在Eclipse 中进行开发. 这个配置文件的方式可以有多种, 可以是xml , 可

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务