Java实战之02Hibernate-07与效率性能相关配置
十四、其他HIbernate配置(与效率,性能相关)
1、数据库连接池
Hibernate有默认的连接池,性能有问题,不适合实际应用,适合学习阶段。DriverManagerConnectionProvider
使用C3P0连接池:
l 拷贝c3p0的jar包到classpath(构建路径)。
l 在hibernate.cfg.xml中配置:
1 <!-- 1、数据库连接的基本信息 --> 2 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 3 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ee0413_hibernate_day34</property> 4 <property name="hibernate.connection.username">root</property> 5 <property name="hibernate.connection.password">1234</property> 6 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 配置数据库方言 --> 7 8 <!-- 数据库连接池的配置:hibernate使用默认连接池是C3P0 9 配置步骤: 10 1、导入连接池必须的jar包 11 2、告知hibernate,连接池的提供商 12 --> 13 <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
2、管理Session的生命周期
原则:Session不能多线程共享。一个线程最好有一个Session。
实现方式:Hibernate.cfg.xml中配置,把session绑定到当前线程上
第一步:
1 <!-- 把Session绑定到当前线程上 --> 2 <property name="hibernate.current_session_context_class">thread</property>
第二步:
1 //每次都是从当前线程上获取Session 2 public static Session getCurrentSession(){ 3 return factory.getCurrentSession();//它是每次都从当前线程上获取 4 }