Hibernate之配置文件


可持久化对象有以下三种状态:

临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失。随时可能被垃圾回收器回收(在数据库中没有于之对应的记录,应为是new初始化),而执行save()方法后,就变为Persistent对象(持久性对象),没有纳入session的管理,内存中一个对象,没有ID,缓存中也没有

持久化状态(Persistent):对象在保存进数据库后或者从数据库加载后、并且没有脱离Session时为持久化状态,这时候数据库中有该对象的信息。由于还在Session中,持久化状态的对象可以执行任何有关数据库的操作,在数据库有存在的对应的记录,纳入session管理。在清理缓存(脏数据检查)的时候,会和数据库同步。内存中有、缓存中有、数据库有(ID)

分离状态(Detached):分离状态是对象曾经出于持久化状态,但是现在已经离开Session了。虽然分离状态的对象有id值,但是已经无法执行有关数据库的操作了。例如,读取延迟加载的集合属性,可能会抛出LazyInitalizeException。

Hibernate整体理解

Hibernate的映射机制 

Hibernate事务隔离机制(乐观锁-悲观锁) 

 

配置文件

Hibernate同时支持动态配置 

XML配置

Configurationcfg = new Configuration().addResource(“com/clf/Cat.hbm.xml”);

//注解配置

Configuration cfg= new Configuration().addClass(com.clf.bean.cat.Class); 

通过setProperty(“hibernate.dialect”,”org.hibernate.dialect.MySQLDialect”)类似的方法可以动态地设置Hibernate参数,还可以用addProperties(Propertiesp)批量的添加参数

常规配置

Hibernate的配置文件可以为XML或者properties文件,默认的配置文件名称为hibernate.cfg.xml或者hibernate.properties,位于classpath下面。properties文件中的参数是具有hibernate前缀的,而xml文件没有

hibernate.connection.driver_class= com.mysql.jdbc.Driver
hibernate.connection.url= jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8
hibernate.connection.username= root
hibernate.connection.password= admin
hibernate.dialect= org.hibernate.dialect.MySQLDialect
hibernate.show_sql= true
hibernate.hbm2ddl.auto= create
hibernate.current_session_context_class= thread

 

<?xml  version="1.0″ encoding="UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

 <!--为true表示将Hibernate发送给数据库的sql显示出来 -->
 <property name="show_sql">true</property>

 <!-- SQL方言,这边设定的是MySQL -->
 <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

 <!-- 一次读的数据库记录数 -->
 <property name="jdbc.fetch_size">50</property>

 <!-- 设定对数据库进行批量删除 -->
 <property name="jdbc.batch_size">30</property>

 <!--驱动程序-->
 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

 <!--JDBC URL -->
 <property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>

 <!-- 数据库用户名-->
 <property name="connection.username">root</property>

 <!– 数据库密码–>
 <property name="connection.password">root</property>

 <!--映射文件 -->
 <mapping resource="com/amigo/pojo/User.hbm.xml"/>
 <mapping resource="com/amigo/pojo/Org.hbm.xml"/>
</session-factory>
</hibernate-configuration>

配置数据源

<session-factory>
<!--下面为JNDI的配置 -->
<!-- 数据源的名称 -->
<property name="connection.datasource">java:comp/env/jdbc/datasourcename</property>

<!-- 数据源的提供者  -->
<property name="hibernate.jndi.url"></property>

<!-- 数据源的实现类  -->
<property name="hibernate.jndi.class"></property>

<!-- Hibernate的连接加载类 -->
<property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>

<property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>

<!--映射文件 -->
<mapping resource="com/amigo/pojo/User.hbm.xml"/>
<mapping resource="com/amigo/pojo/Org.hbm.xml"/>
</session-factory>

c3p0连接池

c3p0连接池是Hibernate推荐使用的连接池,若需要使用该连接池时,需要将c3p0的jar包加入到classpath中。c3p0连接池的配置示例如下:

<session-factory>
<property name="connection.driver_class">……</property>

<!-- JDBC URL -->
<property name="connection.url">……</property>

<!-- 数据库用户名 -->
<property name="connection.username">user</property>

<!-- 数据库密码 -->
<property name="connection.password">pass</property>

<property name="c3p0.min_size">5</property>

<property name="c3p0.max_size">20</property>

<property name="c3p0.timeout">1800</property>

<property name="c3p0.max_statements">50</property>
……
</session-factory>

在上述配置中,Hibernate根据配置文件生成连接,再交给c3p0管理。

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 3
  • 下一页

相关内容