Hibernate 之 Session 与 Session Factory 对象
来源:互联网 发布:淘宝店铺排名技巧 编辑:程序博客网 时间:2024/04/30 02:48
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 实例。
Hibernate 中的 SessionFactory 接口是非常重要的,SessionFactory 对象的 configure() 方法的主要作用是加载框架的 xxxx.hbm.xml 主配置文件,这个对象是一个重量级的对象,创建这个对象非常的消耗系统的资源,所以针对同一个数据库,一般只创建一个 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对象,这是一个轻量级的对象,主要的作用是用来实现对数据的增删改查的一些操作,这个对象对我们的 Hibernate 框架来说是使用最多的一个对象,这个对象的创建方法是通过 Sessionfactory 对象的 openSession()方法来创建的。
这是一个轻量级的对象,但是不是线程安全的,也就是说我们可以在一个数据库访问过程中创建多个Session对象,来实现对数据的操作。
创建Session对象的方法:
之后,我们就可以调用Session所提供的save,find,flush等方法完成持久化操作:
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. 结束事务管理并向数据库提交
SessionFactory 负责创建Session的实例。我们可以通过Configuation实例创建SessionFactory;
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
Configuration 实例 config 会根据当前的配置信息,构造 SessionFactory 实例并返回。SessionFactory 一旦构建完毕,即被赋予特定的配置信息。也就是说,之后config 的任何变更将不会影响到已经创建的 SessionFactory 实例(SessionFactory)。如果需要使用基于改动后的 config 实例的 SessionFactory,需要从 config 重新构建一个SessionFactory 实例。
Hibernate 中的 SessionFactory 接口是非常重要的,SessionFactory 对象的 configure() 方法的主要作用是加载框架的 xxxx.hbm.xml 主配置文件,这个对象是一个重量级的对象,创建这个对象非常的消耗系统的资源,所以针对同一个数据库,一般只创建一个 SessionFactory 对象。
同时这个对象是一个线程安全的,就是多个多个对象可以同时对这个对象进行操作。
创建方式:
private static SessionFactory sessionFactory; static { try { sessionFactory = new<span style="font-family:Times New Roman;"> </span>Configuration().configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } }
Session
Session 是持久层操作的基础,相当于JDBC中的 Connnection。
Configuration config=new Configuration().configure(); //读取默认的hibernate.cfg.xml的文件
SessionFactory sessionFactory=config.buildSessionFactory(); //通过config创建sessionFactory的实例
Session session=sessionFactory.openSession(); //获得session
Session对象,这是一个轻量级的对象,主要的作用是用来实现对数据的增删改查的一些操作,这个对象对我们的 Hibernate 框架来说是使用最多的一个对象,这个对象的创建方法是通过 Sessionfactory 对象的 openSession()方法来创建的。
这是一个轻量级的对象,但是不是线程安全的,也就是说我们可以在一个数据库访问过程中创建多个Session对象,来实现对数据的操作。
创建Session对象的方法:
public static Session openSession() { Session session = sessionFactory.openSession(); return session; }
之后,我们就可以调用Session所提供的save,find,flush等方法完成持久化操作:
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();
0 0
- Hibernate 之 Session 与 Session Factory 对象
- JSP中的session与Hibernate的session对象同步问题。
- Hibernate系列之----session保存对象
- hibernate之如何获得session对象
- HIbernate 创建Session 对象
- hibernate的session对象
- hibernate中的Session对象
- Hibernate 框架Session对象
- Hibernate中的Session对象
- 各版本Hibernate 获取 Session Factory
- Hibernate之管理session与批处理
- Hibernate之Session merge与update方法
- Hibernate SessionFactory与Session
- Hibernate SessionFactory与Session
- 多线程与hibernate session
- Hibernate 之 session
- Hibernate之session
- Hibernate之session
- 迷情蔫
- JSP+Servlet+JavaBean实现登录网页实例详解
- 解决android studio 导入项目太慢
- Leaflet 中文api
- Sublime text格式化json工具安装
- Hibernate 之 Session 与 Session Factory 对象
- 文件操作
- 对Go语言的一点初步的感受和经验。
- shiro认证授权流程
- Protocol Buffers十分钟上手:入门示例
- 高通平台如何打开last kmsg
- Info.plist信息
- WPF应用开机自启动编程实现
- 【EI检索】【南京】第三届智能材料,电力和能源国际会议(AIMPE2016 AUTUMN)