连接池c3p0所需jar包:
Hiberbate开发包-lib-optional-c3p0下全部Jar包
Hiberbate连接池参数配置:
Hiberbate开发包-project-etc-hibernate.properties
hiberbate.cfg.xml参数(放在src下):
<session-factory>
<!--配置mysql数据库连接参数-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!--c3p0连接池参数-->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvidr</property>
<property name="hibernate.dialect">10</property>
<property name="hibernate.dialect">5</property>
<property name="hibernate.dialect">5000</property>
<property name="hibernate.dialect">10</property>
<!--打印方法执行sql与相关格式化操作-->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql>true</property>
<!--加载对象关系映射文件-->
<mapping resource="com/.../.../.xml"/>
</session-factory>
<!--对象关系映射文件常见标记-->
Xxxx.hbm.xml--放在同名同类包下
hibernate-mapping根标记、在根标记下的属性可定义些全局的设置
class--定义一个持久化的实体类 他的两个属性为name和table
name="类路径" table=要实体化的表(数据库表)
id--数据库表中的字段映射 他的两个属性为name和column
name=上面class的name的实体化类中定义的变量 column表中的字段名
id
session缓存的作用:
。减少访问数据库的频率
。保证缓存中的对象与数据库中的数据同步
。当缓存中的持久化对象之间存在循环关联关系时,session会保证不出血访问对象图的死循环,一级由死循环引起的JVM堆栈溢出异常
。当应用程序调用Transaction的commit()方法时,commit()方法会清理缓存,然后再向数据库提交事务
。当应用程序中显示调用session的flush()方法水,通过session的setFushMode(FlushMode fm)方法来设定清理缓存的时间点
FlushMode.ALWAYS和FlushMode.AUTO(默认)会清理全部缓存
持久化应用的生命周期
。瞬时(Transient)状态
。持久化(Persistent)状态
。脱管(detached)状态
。移除(removed)状态