第一节:配置数据库连接池

访问数据库,需要不断的创建和释放连接,假如访问量大的话,效率比较低级,服务器消耗大;

使用数据库连接池,我们可以根据实际项目的情况,定义连接池的连接个数,从而可以实现从连接池获取连接,用户放回到连接池。从而有效的提高的系统的执行效率;

Hibernate 自带的连接池不是很好,有bug;

推荐使用C3P0,proxool 等;

C3P0的jar包:

百度云下载:http://pan.baidu.com/s/1jH45002

密码:s391

资料:

<!-- 最小连接数 -->
<property name="c3p0.min_size">7</property>
<!-- 最大连接数 -->
<property name="c3p0.max_size">42</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="c3p0.timeout">1800</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="c3p0.max_statements">50</property>

hibernate.cfg.xml

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5
 6 <hibernate-configuration>
 7
 8     <session-factory>
 9
10         <!--数据库连接设置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">123456</property>
15
16
17         <!-- 方言 -->
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
19
20         <!-- 控制台显示SQL -->
21         <property name="show_sql">true</property>
22
23         <!-- 自动更新表结构 -->
24         <property name="hbm2ddl.auto">update</property>
25
26         <!-- 最小连接数 -->
27          <property name="c3p0.min_size">7</property>
28          <!-- 最大连接数 -->
29          <property name="c3p0.max_size">42</property>
30          <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
31          <property name="c3p0.timeout">1800</property>
32          <!-- 最大的PreparedStatement的数量 -->
33          <property name="c3p0.max_statements">50</property>
34
35           <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
36
37
38
39     </session-factory>
40
41 </hibernate-configuration>

第二节:配置日志框架Log4J

Log4J 作为一个开源的优秀日志框架,被广泛使用,Hibernate4 必须包中直接支持Log4J 日志框架;我们只需要引入Log4j jar 包,即可使用

 log4jjar包和配置文件:

百度云下载:http://pan.baidu.com/s/1slchiMx

密码:i7qe

StudentTest.java

 1 package com.java1234.service;
 2
 3
 4 import java.util.Iterator;
 5 import java.util.List;
 6
 7 import org.apache.log4j.Logger;
 8 import org.hibernate.Criteria;
 9 import org.hibernate.Query;
10 import org.hibernate.Session;
11 import org.hibernate.SessionFactory;
12 import org.hibernate.criterion.Criterion;
13 import org.hibernate.criterion.Order;
14 import org.hibernate.criterion.Restrictions;
15 import org.junit.After;
16 import org.junit.Before;
17 import org.junit.Test;
18
19 import com.java1234.model.Student;
20 import com.java1234.util.HibernateUtil;
21
22 public class StudentTest {
23
24     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
25     private Session session;
26     private Logger logger=Logger.getLogger(StudentTest.class);
27
28     @Before
29     public void setUp() throws Exception {
30         session=sessionFactory.openSession(); // 生成一个session
31         session.beginTransaction(); // 开启事务
32     }
33
34     @After
35     public void tearDown() throws Exception {
36          session.getTransaction().commit(); // 提交事务
37          session.close(); // 关闭session
38     }
39
40     @Test
41     public void testSQLQuery() {
42         String sql="select * from t_student";
43         Query query=session.createSQLQuery(sql).addEntity(Student.class);
44         List studentList=query.list();
45         Iterator it=studentList.iterator();
46         while(it.hasNext()){
47             Student s=(Student)it.next();
48             System.out.println(s);
49         }
50         logger.debug("这是一个debug信息");
51         logger.info("这是一个info信息");
52         logger.error("这是一个错误信息");
53     }
54
55
56
57 }

第三节:配置Hibernate 二级缓存

1,缓存的概念:
缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存或者硬盘中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate 在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL 语句到数据库查询的性能损耗。

2,Hibernate 缓存的分类:

一、Session 缓存(又称作事务缓存):Hibernate 内置的,不能卸除。

缓存范围:缓存只能被当前Session 对象访问。缓存的生命周期依赖于Session 的生命周期,当Session 被关闭后,缓存也就结束生命周期。

二、SessionFactory 缓存(又称作应用缓存):使用第三方插件,可插拔。

缓存范围:缓存被应用范围内的所有session 共享,不同的Session 可以共享。这些session 有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,缓存也就结束了生命。

周期,二级缓存存在于应用程序范围。

3,二级缓存策略提供商:
提供了HashTable 缓存,EHCache,OSCache,SwarmCache,jBoss Cathe2,这些缓存机制,其中EHCache,OSCache 是不能用于集群环境(Cluster Safe)的,而SwarmCache,jBoss Cathe2 是可以的。HashTable 缓存主要是用来测试的,只能把对象放在内存中,EHCache,OSCache 可以把对象放在内存(memory)中,也可以把对象放在硬盘(disk)上(为什么放到硬盘上?上面解释了)。

4,什么数据适合放二级缓存中:

(1)经常被访问

(2)改动不大

(3)数量有限

(4)不是很重要的数据,允许出现偶尔并发的数据。

比如组织机构代码,列表信息等;

转载于:https://www.cnblogs.com/wishwzp/p/5486048.html

(十一)Hibernate 高级配置相关推荐

  1. (十三)Hibernate高级配置

    配置数据库连接池 配置C3P0连接池.先导入c3p0包.然后在hibernate.cfg.xml文件中 ,使用下面代码配置连接池<property name="hibernate.co ...

  2. Hibernate第十一篇【配置C3P0数据库连接池、线程Session】

    Hibernate连接池 Hibernate自带了连接池,但是呢,该连接池比较简单..而Hibernate又对C3P0这个连接池支持-因此我们来更换Hibernate连接池为C3P0 查看Hibern ...

  3. HBase高级配置跟调整(1)

    搜搜 日榜 周榜 月榜 总榜 HBase高级配置跟调整(1) 2015-03-25 05:52 | 4932人阅读 | 来源 HBase高级配置和调整(1) 在对HBase集群进行调整之前,你需要先知 ...

  4. 理解并使用ASP.NET的高级配置

    引言: 本文将讨论ASP.NET应用的高级配置方法,在文中将讨论的一些配置如下:为ASP.NET进程设置独立的ID标记:配置ASP.NET网站或者网 站目录的访问权限:处理自定义配置事件等.除了以上提 ...

  5. hibernate自动配置_Hibernate自动冲洗的黑暗面

    hibernate自动配置 介绍 既然我已经描述了JPA和Hibernate刷新策略的基础知识 ,我就可以继续阐明Hibernate的AUTO刷新模式的令人惊讶的行为. 并非所有查询都会触发会话刷新 ...

  6. ASP.NET高级配置Web.config和Machine.Config

    我们都知道,使用ASP是不需要也没有地方可以配置的(IIS配置除外),因此,我们不能针对一些特定的网站应用或者特定的网站目录,设置一些特殊配置,可以这样说,ASP的应用,是比较"傻瓜化&qu ...

  7. 【GORM框架】ORM介绍、GORM简单连接和高级配置详解

    博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作.目前在学习和分享:数据结构.Go,Java等相关知识. 博主主页: @是瑶瑶子啦 所属专栏: GORM框架学习 近期目标:写好专栏的每一篇文 ...

  8. Linux下如何实现用户的集中管理(NIS服务器的高级配置)

    Linux下如何实现用户的集中管理 (NIS服务器的高级配置)   一.NIS服务器的属性设置   1.修改NIS系统的主机名 Linux系统可以使用hostname命令查看和临时设置Linux系统的 ...

  9. hibernate 高级映射 --张国亮总结第一季

    在做持久化类的时候的规定: 1).有一个默认的构造方法: 2).所有的属性都有setter和getter方法 3).有一个对象标识符Oid; 4).如果有集合属性,则必须定义成接口类型:List.Se ...

最新文章

  1. Maya和Arnold的高级照明实践
  2. tomcat线程释放时间_聊下并发和Tomcat线程数(错误更正)
  3. LeetCode Range Sum Query 2D - Immutable
  4. 广东白云机场俯视图,猜猜像什么
  5. Python+MySQL学习笔记(一)
  6. Coding Interview Guide -- 数组的partition调整
  7. 给你推荐几个 NB 的公众号
  8. SecureCRT文件传输
  9. 远程过程调用(Remote Procedure Call,RPC)
  10. POJ 2653 Pick-up sticks (线段相交)
  11. map iterator_一个简单的Map Iterator性能测试
  12. 用cloud-zoom做一个仿淘宝的宝贝放大镜查看功能
  13. SVN版本管理系统的使用(CentOS+Subversion+Apache+Jsvnadmin+TortoiseSVN)
  14. vc中format用法以及c++中Format用法
  15. 计算机二级vb上机题,全国计算机二级VB上机题库(题 答案).doc
  16. Java数据库插入记录的语句-单引号-双引号values('username+'-'+password
  17. 400行代码实现双人对战五子棋(适合新手入门)
  18. day2-----k8s集群管理常用知识点(1)
  19. SylixOS x86 HPET 定时器驱动
  20. 互联网正在化有形为无形,这是一场深刻而又彻底的嬗变

热门文章

  1. CUDA学习(六十五)
  2. 安装多实例造成***S故障
  3. svn 版本控制操作命令
  4. asteirsk 开发指南
  5. 使用siege对varnish进行压测对比
  6. javac命令不好用的解决方法
  7. python中的 同步与异步 互斥锁 和 死锁
  8. 销售面销五个最基础步骤步骤_3个步骤,可提供强有力的反馈
  9. linux内核锁死怎么解决_解决Linux内核中的2038年问题
  10. 360安全路由器v2处理器_您的路由器有多不安全?