`
fulerbakesi
  • 浏览: 561941 次
文章分类
社区版块
存档分类
最新评论

SessionFactory的创建和Session的获得

 
阅读更多

1。当我们调用

<wbr><wbr> Configuration config=new Configuration().configure();</wbr></wbr>

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

<wbr></wbr>

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

<wbr><wbr><wbr></wbr></wbr></wbr>

SessionFactory

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

<wbr><wbr><wbr><wbr><wbr><wbr><wbr> Configuration config=new Configuration().configure();</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr> SessionFactory sessionFactory=config.buildSessionFactory();</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

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

<wbr></wbr>

Session

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

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

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

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

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

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 看例Save:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr> TUser user=new TUser();</wbr></wbr>

<wbr><wbr> user.setName("yuanliang");</wbr></wbr>

<wbr><wbr> session.save(user);</wbr></wbr>

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

<wbr><wbr></wbr></wbr>

<wbr></wbr>

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

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

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

<wbr><wbr> Customer c=(Customer)session.load(Customer.class,customer_id);</wbr></wbr>

<wbr></wbr>

修改数据:

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

<wbr>Query query = session.createQuery("from User as u where list = query.list();<br><wbr>User usr = (User)list.get(0);</wbr></wbr>

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

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

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

分享到:
评论

相关推荐

    hibernate3

    (2)SessionFactory:初始化Hibernate,充当数据存储源的代理,创建Session对象。一个SessinFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。如果应用同时访问多个DB,怎需要为每个数据库...

    hibernate.java

    创建SessionFactory,编写session获得方法,编写session获得和 打开 和关闭方法

    hibernate精华教程

    b)使用SessionFactory对象openSession()方法创建Session对象。 c)使用Session的相应方法来操作数据库,将对象信息持久化到数据库。 3.Hibernate的5个核心类或接口: (1)Configuration:用于解析hibernate.cfg....

    SSH整合中 hibernate托管给Spring得到SessionFactory

    Spring文件中的 SessionFactory中 加入为了能得到同一个Session

    第24次课-1 Spring与Hibernate的整合

    创建Session实例 打开事务 开始持久化访问 提交事务 如遇异常,回滚事务 关闭Session 24.3 Spring对Hibernate的简化 24.3.1 概述 Spring提供的持久层访问的方式,无须显式地打开和关闭Session,也无须在代码中执行...

    compass学习笔记

    Compass概念: 1:Compass相当于hb的SessionFactory 2:CompassSession相当于hb的Session 3:CompassTransaction相当于hb的transaction。 &lt;br&gt;Compass也是采用CompassConfiguration(装载配置和映射文件...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    Hibernate实战(第2版 中文高清版)

     第16章 创建和测试分层的应用程序   16.1 Web应用程序中的Hibernate   16.1.1 用例简介   16.1.2 编写控制器   16.1.3 OSIV模式   16.1.4 设计巧妙的领域模型   16.2 创建持久层   16.2.1 泛型的...

    java面试题

    1:读取并解析映射信息,创建SessionFactory 2:打开Session 3:创建事物 4:持久化操作 5:提交事务 6:关闭Session 7:关闭SessionFactory Hibernate持久化:Hibernate根据定义的映射规则将对象持久化保存...

    Hibernate参考文档

    3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的...

    hibernate 体系结构与配置 参考文档(html)

    获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 ...

    Hibernate中文详细学习文档

    3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的...

    Hibernate 中文 html 帮助文档

    3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的...

    hibernate 框架详解

    获得SessionFactory 4.3. JDBC连接 4.4. 可选的配置属性 4.4.1. SQL方言 4.4.2. 外连接抓取(Outer Join Fetching) 4.4.3. 二进制流 (Binary Streams) 4.4.4. 二级缓存与查询缓存 4.4.5. 查询语言中的替换 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的...

    Hibernate+中文文档

    3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的...

Global site tag (gtag.js) - Google Analytics