zoukankan      html  css  js  c++  java
  • 攻城狮在路上(壹) Hibernate(十五)--- Hibernate的高级配置

    一、配置数据库连接池
      1、使用默认的数据库连接池
        Hibernate提供了默认了数据库连接池,它的实现类为DriverManegerConnectionProvider,如果在Hibernate的配置文件中没有明确配置任何连接池,Hibernate就会使用这个默认的连接池。
        注意:在开发正式的商业软件产品时,不能使用这个连接池,因为它不是成熟的专业连接池产品,缺乏响应大批量并发请求及荣错的能力。
      2、使用配置文件指定的数据库连接池
        hibernate.properties配置C3P0连接池的实例代码:

    hibernate.c3p0.min_size=5
    hibernate.c3p0.max_size=20
    hibernate.c3p0.timeout=300
    hibernate.c3p0.max_statements=50
    hibernate.c3p0.idle_test_period=3000

        c3p0的配置选项:

    配置选项 描述
    min_size 在连接池中可用的数据库连接的最少数目
    max_size 在连接池中可用的数据库连接的最大数目
    timeout 设定数据库连接的过期时间,以秒为单位。如果连接池中的某个数据库连接处于空闲状态的时间超过timeout时间,就会从连接池中清除。
    max_statements 可以被缓存的PreparedStatement实例的最大数目。缓存适量的PreparedStatement实例,能够大大提高Hibernate的性能。
    idle_test_period 在使数据库连接自动生效之前处于空闲状态的时间,以秒为单位。


        不同的连接池有不同的配置选项,在org.hibernate.cfg.Enviroment类的JavaDoc文档中,描述了当前Hibernate支撑的各种连接池的配置选项。
        如果使用用户提供的其他类型的连接池,首先要为这个连接池创建ConnectionProvider实现类,然后在配置文件中的hibernate.connection.provider_class=xxx显式指定。
      3、从容器中获取数据源
        在受管理环境中,容器负责构造数据源,即javax.sql.DataSource实例,然后发布为JNDI资源。
        在不受管理的环境中,有些Servlet容器,如tomcat,也能负责构造数据源,并发布weJNDI资源。
        以tomcat为例,配置分为两步:
        A、在tomcat的server.xml中增加配置:

    <Resuorce name="jdbc/SAMPLEDB"
      auth="Container/Application"
      type="javax.sql.DataSource"
      maxActive="100"
      maxIdle="30"
      maxWait="10000"
      username="root"
      password="1234"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/SAMPLEDB?autoReconnect=true"/>

        B、在hibernate.properties中配置:

    hibernate.connection.datasource=java:comp/env/jdbc/SAMPLEDB

      4、有Java应用本身提供数据库连接
      使用SessionFactory.openSession(Connection conn);来实现。
      如果Session使用的是Java应用提供的Connection实例,那么Hibernate的二级缓存就会失效,Hibernate不能对同一个数据库事务执行的多条SQL语句进行跟踪。

    二、配置事务类型:暂不做理解。
    三、把SessionFactory与JNDI绑定:暂不做理解。
    四、配置日志:暂不做笔记。
    五、使用XML格式的配置文件
      在hibernate.cfg.xml中配置,实例代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    <session-factory >
    <property name="dialect">
      org.hibernate.dialect.MySQLDialect
    </property>
    <property name="connection.driver_class">
      com.mysql.jdbc.Driver
    </property>
    <property name="connection.url">
      jdbc:mysql://localhost:3306/sampledb
    </property>
    <property name="connection.username">
      root
    </property>
    <property name="connection.password">
    1234
    </property>
    
    <property name="show_sql">true</property>
    
    <property name="use_sql_comments">
      true
    </property>
    
    <mapping resource="mypack/Customer.hbm.xml" />
    <mapping resource="mypack/Order.hbm.xml" />
    </session-factory>
    </hibernate-configuration>



  • 相关阅读:
    具有包含性列的索引
    SQLServer性能调优3之索引(Index)的维护
    千万级SQL Server数据库表分区的实现
    SQL Server表分区
    SQL Server 索引中include的魅力(具有包含性列的索引)
    Sql Server 性能优化之包含列
    SQL Server索引进阶第五篇:索引包含列 .
    spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
    spring mvc传入参数不仅仅转换为json,还可以直接将json字符串转换为具体的java对象
    只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找
  • 原文地址:https://www.cnblogs.com/tq03/p/3788698.html
Copyright © 2011-2022 走看看