2014年12月8日-configuration类以及openSession和getCurrentSession的区别

Hibernate的configuration类:

configuration类是用来加载hibernate配置文件的,默认的是读取hibernate.cfg.xml配置文件的信息。

Configuration  cfg = new Configuration().configure();
//Configuration  cfg = new AnnotationConfiguration().configure();   //使用annotation的加载配置文件的方法
SessionFactory  sf = cfg.buildSessionFactory();
Session  session = sf.openSession();
//Session  session = sf.getCurrentSession();

SessionFactory

  • 用来产生和管理session
  • 通常情况下每个应用只需要一个SessionFactory
  • 除非要访问多个数据库的情况
  • 常用的两个方法是 openSession()和getCurrentSession()

openSession每次都是建立新的Session,此方法需要close;

getCurrentSession 是从上下文找,如果有,用旧的,如果没有,就建立新的Session,

此用途是建立事务边界,此方法是事务提交后自动close;

此方法和在hibernate.cfg.xml的配置属性有关,是:

hibernate.current_Session_context_class属性,可取的值有:jta  |   thread  |  managed  |  custom.class

  • current_Session_context_class (jta  thread )(Java transaction api)!!和Java persistence api jpa别混淆了

用getCurrentSession 需要设置Session的上下文,上下文有两种,第一种是jta,第二种是thread

thread主要是从数据库建立它的事务,jta是从分布式,jta运行时需要application server的支持。

!!#!!关于多个事务

JTATransactionManager

事务有两种:一种是依赖数据库本身的简单事务,我们称之为connection事务

第二种是JTA事务

时间: 2024-10-12 20:45:51

2014年12月8日-configuration类以及openSession和getCurrentSession的区别的相关文章

米的建站日记(2014年12月9日)

后台框架准备用struts2.2.3 + spring3.1.0 + mybatis3.1.0 这是在网上找到的一位大牛的demo http://blog.csdn.net/afgasdg/article/details/7392367 额,自己找太麻烦了,就用他的吧 数据库使用mongodb,这个我从来没用过,关系型数据库以前倒是用过,暂且边学边做把.~ ~ 各种jar包,js库,现在加起来快22M了呢. 奇怪,为毛项目启动就报错,我想应该是spring的配置文件还没有和数据库连上,明天准备看

2015微软创新杯Imaginecup大赛报名进行中(报名截止2014年12月31日23:59)

CSDN高校俱乐部与微软官方合作,2015微软创新杯大赛中国区官网落户CSDN高校俱乐部:http://student.csdn.net/mcs/imaginecup2015 在微软官方设置创新杯中国区奖项之外,CSDN高校俱乐部每个竞赛项目特设一等奖.二等奖.三等奖及纪念奖若干名. CSDN高校俱乐部特别奖(获奖者需在高校俱乐部进行过报名备案):详情-> 1. 一等奖(三支团队): 每个竞赛项目一等奖一名,每支团队获得奖金2,000元人民币,团队成员每人尊享2015 CSDN VIP年卡会员:

翻译:Gregory Larsen,2016/02/19(第一版:2014年12月17日)高级T-SQL阶梯1级:使用CROSS JOIN介绍高级T-SQL

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/119933/ 原文作者:Gregory Larsen,2016/02/19(第一版:2014年12月17日) 系列 本文是"Stairway Series:Stairway to Advanced T-SQL"的一部分 这个阶梯将包含一系列文章,这些文章将在前面两个T-SQL阶梯,T-SQL DML和T-SQL超越基础知识的T-SQL基础上进行扩展. 这个楼梯应

云计算之路-阿里云上-寒流来袭:2014年12月23日21:45-23:15网站故障

1个多小时间的网站故障给大家带来很大的麻烦,在这里我们表示深深的歉意!希望大家能够谅解! 这两天上海的气温在回升,而杭州的云上却突然袭来一股寒流. 12月23日晚上,阿里云进行了一次RDS的发布,在这次发布中自动地修改了我们的数据库连接数限制,谁也不知道,然后... 21:45:52左右开始,日志中出现大量执行时间超过5秒的请求. 然后出现超过10秒.20秒...甚至超过100秒的请求. 21:46:50左右,开始出现数据库连接错误: System.Data.SqlClient.SqlExcep

周浩晖 - 斗宴(2014年12月27日)

<死亡通知单:暗黑者> 作 者:周浩晖译 者:系 列:暗黑者出 版:时代文华书局字 数:255千字阅读完成:2014年11月10日

时间处理:计算下一天日期,如输入&quot;2004/12/31&quot;(注释2014年12月31日),则输出&quot;2005/1/1&quot;.

/* ============================================================================ Name : Exercise.c Author : haier Version : 0.01 Copyright : Your copyright notice Description : Ansi-style, Compile by Code:Blocks, Platform Linux =======================

2014年12月18日:CoreOS 服务器磁盘空间不够

下列方法比较粗暴,慎重使用,我的是实验环境. 今天想试试 Docker,结果发现几乎所有命令都不能工作了.经过调查,发现是 Docker 的镜像和 btrfs 目录占用了大部分的空间.于是先删除了 Docker 的镜像 sudo rm /var/lib/docker/containers.再接下来,删除 btrfs 占用的空间 #!/bin/bash for i in `sudo ls /var/lib/docker/btrfs/subvolumes` do echo "Deleting $i&

2014年12月9日星期二 oc学习笔记

OC的第二个类 Touch第二个类文件.m Open 第二个类文件.m /* 人 类名:Person 属性(成员变量\实例变量):体重.年龄 行为(方法):走路 */ /*1.类的声明 *成员变量 *方法的声明 */ 例一: #Imort <Foundation/Foundation.h> @interface Person:NSObject { //成员变量:(成员变量必须写在大括号里面) @public Int age; double weight; } -(void)walk; @end

2014年12月5日

1.对ArrayList的遍历出的错误 public void setOtherWeekRep(ArrayList<OtherWeekRep> owrList) {        Iterator<OtherWeekRep> iter = owrList.iterator();        while(iter.hasNext()){            System.out.println("INSERT INTO Persons VALUES ('"+i