1    本章目的:获得session的两种方式:

openSession 和 getCurrentSession

2    两种session的使用方法

1openSession可以直接写,getCurrentSession需要在cfg.xml中配置

2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭

这里getCurrentSession本地事务(本地事务:jdbc)时 要在配置文件里进行如下设置

* 如果使用的是本地事务(jdbc事务)  <property name="hibernate.current_session_context_class">thread</property>

* 如果使用的是全局事务(jta事务)  <property name="hibernate.current_session_context_class">jta</property>

3    两种session用途不同之出

getCurrentSession创建的session会和绑定到当前线程,而openSession不会。

demo:

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="connection.url">jdbc:mysql://localhost:3306/bendi</property>
     <property name="connection.username">root</property>
     <property name="connection.password">weidou318</property>
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     
     <property name="show_sql">true</property>
     <property name="format_sql">true</property>
     <property name="hbm2ddl.auto">create</property>
     
     <property name="hibernate.current_session_context_class">thread</property>
  
  <mapping resource = "Student.hbm.xml"/>     
    </session-factory>
</hibernate-configuration>

StudentTest.java

package hibernate_001;

import java.sql.Array; import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Clob; import java.sql.DatabaseMetaData; import java.sql.NClob; import java.sql.PreparedStatement; import java.sql.SQLClientInfoException; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.SQLXML; import java.sql.Savepoint; import java.sql.Statement; import java.sql.Struct; import java.util.Date; import java.util.Map; import java.util.Properties; import java.util.TimeZone; import java.util.concurrent.Executor;

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; import org.hibernate.metamodel.SessionFactoryBuilder; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;

import com.ddwei.student.Student; import com.mysql.jdbc.Connection; import com.mysql.jdbc.ExceptionInterceptor; import com.mysql.jdbc.Extension; import com.mysql.jdbc.MySQLConnection; import com.mysql.jdbc.log.Log;

public class StudentTest {    private SessionFactory sessionFactory;  private Session session;  private Transaction trasaction;    @Test  public void testSaveStudent1(){   Configuration config = new Configuration().configure();   ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();   SessionFactory sessionFactory = config.buildSessionFactory(serviceRe);   Session session = sessionFactory.openSession(); //  Student student =new Student(3,"周恩来","男",new Date(),"绍兴");//创建学生对象 //  session.save(student);//会话保存学生对象进入数据库        }      @Test  public void testSaveStudent2(){      Configuration config = new Configuration().configure();   ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();   SessionFactory sessionFactory = config.buildSessionFactory(serviceRe);   Session session = sessionFactory.getCurrentSession(); //  Student student =new Student(3,"周恩来","男",new Date(),"绍兴");//创建学生对象 //  session.save(student);//会话保存学生对象进入数据库           }

}

hibernate课程 初探单表映射2-5 session详解(上)的更多相关文章

  1. hibernate课程 初探单表映射4-1 课程总结

    ORM是一种面向对象编程的方法,用这种方法来避免写数据库底层语言sql语句,这样有利于java的跨平台,扩展.维护.而hirenate是ORM的一种框架 hirbernate开发基本步骤编写配置文档h ...

  2. hibernate课程 初探单表映射3-1 hibernate单表操作简介

    本章简介: 1 单一主键 2 基本类型 3 对象类型 4 组件属性 5 单表操作CRUD实例

  3. hibernate课程 初探单表映射2-1 hibernate进阶 本章简介

    本章简介,主要讲5大块的内容 1 hibernate.cfg.xml的配置 2 session 的简介 3 transaction的简介 4 session的详解 5 对象关系映射常用配置

  4. hibernate课程 初探单表映射1-9 创建关系映射文件

    创建关系映射文件:(把实体类映射成一个表) 1 右键src==>new==>other==>hibernate==>hbm.xml==>Student==>Fini ...

  5. hibernate课程 初探单表映射3-3 对象类型

    本节简介: 1 简介对象类型(重点是音视频blob类型) 2 demo(对图片的写入数据库与读取) 1 简介对象类型 映射类型 java类型 标准sql类型 mysql类型 oracle类型 bina ...

  6. hibernate课程 初探单表映射2-7 hbm配置文件常用设置

    本节主要简介hbm配置文件以下内容: 1 mapping标签 2 class标签 3 id标签 1 hibbernate-mapping标签 schema 模式名称 catalog 目录名称 defa ...

  7. hibernate课程 初探单表映射2-4 transaction简介

    1 hibernate是非自动提交.如果transaction不写的话,会只创建表结构而不插入语句.   如果不写transaction而想实现插入的功能的话,需要重写session的dowork方法 ...

  8. hibernate课程 初探单表映射2-2 hibernate常用配置

    1 hibernate.cfg.xml常用配置: show_sql 控制台打印sql format_sql 控制台将sql排版 hbm2ddl.auto: create 删除表结构,重新建表并插值 u ...

  9. hibernate课程 初探单表映射1-11 通过hibernate API访问编写第一个小例子

    hibernate 业务流程 1 创建配置对象 Configuration config  = new  Configuration().configure(); 2 创建服务注册对象 Service ...

  10. hibernate课程 初探单表映射1-5 hibernate第一个demo

    hibernate 开发步骤:(hibernate4.2+mysql6.0) 1 hibernate配置文件(hibernate.cfg.xml) 2 持久化类 3 对象-关系映射文件 4 hiber ...

随机推荐

  1. 写一个c程序辨别系统是大端or小端字节序

    字节序有两种表示方法:大端字节序(big ending),小端字节序(little  ending) 看一个unsigned short 数据,它占2个字节,给它赋值0x1234.若采用的大端字节序, ...

  2. base64 数据加密

    1.新建一个base64.js文件 添加下面的代码 /* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> * Version: 1.0 ...

  3. C++类和对象的一个简单的实例

    题目:找出一个整形数组中的元素的最大值 下面,我们用类和对象的方法来做. #include<iostream> using namespace std; class Array_max{ ...

  4. pig语法学习 FOREACH GENERATE group AS

    深入浅出,转一个 转载必须注明出处:http://www.codelast.com/ 转载地址 本文可以让刚接触pig的人对一些基础概念有个初步的了解. 本文大概是互联网上第一篇公开发表的且涵盖大量实 ...

  5. sklearn常用数据的使用

    from sklearn import datasets from sklearn.linear_model import LinearRegression #加载数据 loaded_data = d ...

  6. VS2010和VS2015的Dll项目

    最近在使用公司VS2010开发的老的项目时,发现一些问题 公司用VS2010开发了一个项目,生成 GUS_TestIdentity.dll, 放在 C:\Windows\assembly 中 当在另一 ...

  7. 23. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...

  8. JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承

    相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...

  9. Docker 企业级镜像仓库 Harbor 的搭建与维护

    目录 一.什么是 Harbor 二.Harbor 安装 2.1.Harbor 安装环境 2.2.Harbor安装 2.3 配置HTTPS 三.Harbor 的使用 3.1.登录Harbor并使用 3. ...

  10. [CentOS7] 使用磁盘分割建立swap

    声明:本文主要总结自:鸟哥的Linux私房菜-第七章.Linux 磁碟與檔案系統管理,如有侵权,请通知博主 通过 vim /etc/fstab 使该新建的swap分区每次开机都自己挂载 至此,已经完成 ...