1、整合c3p0(连接池)

步骤一:导入c3p0 jar包

步骤二:hibernate.cfg.xml 配置

hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider

步骤三:c3p0具体配置参数

#hibernate.c3p0.max_size 2

#hibernate.c3p0.min_size 2

#hibernate.c3p0.timeout 5000

#hibernate.c3p0.max_statements 100

#hibernate.c3p0.idle_test_period 3000

#hibernate.c3p0.acquire_increment 2

#hibernate.c3p0.validate false

	<!-- 使用C3p0连接池
hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--
#hibernate.c3p0.max_size 2
#hibernate.c3p0.min_size 2
#hibernate.c3p0.timeout 5000
#hibernate.c3p0.max_statements 100
#hibernate.c3p0.idle_test_period 3000
#hibernate.c3p0.acquire_increment 2
#hibernate.c3p0.validate false
-->
<property name="hibernate.c3p0.max_size">5</property>
<property name="hibernate.c3p0.timeout">50000</property>

  2、事务

特性:ACID

1        原子性:整体, 事务:被事务包裹的sql语句是一组业务操作,要么全部成功,要么全部不成功。

2       一致性:数据, 在事务操作中,数据要统一,增加1000,必须减少1000,类似于物理中能量守恒。

3      隔离性:并发,并发环境下,事务与事务之间不干扰

4    持久性:结果,事务一旦提交,事务中的操作要会永远保存

隔离问题:

脏读:一个事务读到另一个事务未提交的内容

不可重复读:一个事务读到另一个事务已提交的内容(insert)

虚读(幻读):一个事务读到另一个事务已提交的内容(update)

隔离级别--解决问题

read uncommittd,读未提交。存在3个问题。

read committed,读已提交。解决:脏读。存在2个问题。

repeatable read ,可重复读。解决:脏读、不可重复读。存在1个问题。

serializable,串行化。单事务。没有问题。

2.1  hibernate设置隔离级别

2.2 数据库中的锁

数据库的锁(了解的了解)
           悲观锁(数据库提供实现) :默认认为一定会发送别人要修改我使用的数据. 那我就可以为我读取的数据加锁.
                  读锁/共享锁 => 读锁可被其他线程所共享,如果是读取的话大家都可以用这把锁读到数据.
                    select * from table lock in share mode(读锁、共享锁)

写锁/排他锁 => 写锁不能共享,只要有人为数据加入了写锁,其他人就不能为数据加任何锁.
                   select * from table for update

@Test
//悲观锁
//写锁
public void test01(){
Session session = HibernateUtil.openSession();
Transaction tran = session.beginTransaction(); Customer cust = (Customer) session.get(Customer.class, 6, LockOptions.UPGRADE);
System.out.println(cust);
tran.commit();
session.close();
}

(写锁、排它锁)

乐观锁(需要自己实现):丢失更新肯定不会发生

在表中提供一个字段(版本字段),用于标识记录。如果版本不一致,不允许操作。

在PO对象(javabean)提供字段,表示版本字段。一般Integer

在*.hbm.xml 文件配置 <version name="...">

@Test
//乐观锁
public void test02(){
Session session = HibernateUtil.openSession();
Transaction tran = session.beginTransaction(); Customer cust = (Customer) session.get(Customer.class, 4, LockOptions.READ);
cust.setName("aloce");
tran.commit();
session.close();
}

hibernate学习(8)——事务.连接池.锁 相关设置的更多相关文章

  1. day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

    day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...

  2. Hibernate整合C3P0实现连接池

    Hibernate整合C3P0实现连接池 hibernate中可以使用默认的连接池,无论功能与性能都不如C3PO(网友反映,我没有测试过),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI ...

  3. Hibernate【查询、连接池、逆向工程】

    前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式....到目前为止,我们都是使用一些简单的主键查询阿...使用HQL查询所有的数据....本博文主要讲解Hiberna ...

  4. Go组件学习——手写连接池并没有那么简单

    1.背景 前段时间在看gorm,发现gorm是复用database/sql的连接池. 于是翻了下database/sql的数据库连接池的代码实现,看完代码,好像也不是很复杂,但是总觉得理解不够深刻,于 ...

  5. Redis连接池的相关问题分析与总结

    https://mp.weixin.qq.com/s/juvr89lAvM0uuDmyWyvqNA 阿里干货课堂丨Redis连接池的相关问题分析与总结 原创 技术僧 Java进阶与云计算开发 2018 ...

  6. Hibernate学习11——Hibernate 高级配置(连接池、log4j)

    第一节:配置数据库连接池 这里配置c3p0连接池,需要的jar包: jar包位于hibernate压缩包的:hibernate-release-4.3.5.Final\lib\optional\c3p ...

  7. 超全面的JavaWeb笔记day18<事务&连接池&DBUtils>

    1.事务 ACID 原子性 一致性 隔离性 持久性 mysql中开启和关闭事务 开启事务:START TRANSACTION 结束事务 提交事务:COMMIT 回滚事务:ROLLBACK JDBC中开 ...

  8. MyBatis学习-使用Druid连接池将Maybatis整合到spring

    目录 前言 什么是Druid连接池 Druid可以做什么? 导入库包 连接oracle 连接mysql 导入mybatis 导入druid 导入spring-jdbc包 导入spring包 导入spr ...

  9. ActiveMQ学习心得:连接池的简单实现和模板模式的应用

    一.安装activemq 下载地址:https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.zip 下载完 ...

随机推荐

  1. testng 教程

    Testng 简介: Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation,主要有以下特性: annotations  注释,如 @test ...

  2. asp.net MVC excel数据导出

    public FileResult ExportExcel() { var sbHtml = new StringBuilder(); sbHtml.Append("<table bo ...

  3. sql之left join、right join、inner join的区别

    sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...

  4. iOS开源项目、框架资源

    总结的 iOS.Mac开源项目.库.知识点:http://www.open-open.com/lib/view/open1442664670352.html

  5. 51nod1085(01背包)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085 题意: 中文题诶~ 思路: 01背包模板题. 用dp[ ...

  6. for变量作用域(vc6与vs)

    for变量:写在for循环初始语句中的变量.如:for (int i=1,j=2; i<100; i++) vc6的for变量 int i 的作用域: void func(bool condit ...

  7. C语言SOCKET编程指南

    1.介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措? ...

  8. java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法

    1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...

  9. AngularJS包含

    1.在HTML中包含HTML文件:在HTML中,目前还不支持包含HTML文件的功能: 2.服务端包含:大多数服务端脚本都支持文件功能(SSI),使用SSI,你可以在HTML中包含HTML文件,并发送到 ...

  10. [工作中的设计模式]责任链模式chain

    一.模式解析 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知 ...