Hibernate之配置文件

2015-03-18 22:56:33 · 作者: · 浏览: 85

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


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


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


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


?


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


?



"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">




?
?true


?
?net.sf.hibernate.dialect.MySQLDialect


?
?50


?
?30


?
?com.mysql.jdbc.Driver


?
?jdbc:mysql://localhost/dbname?characterEncoding=gb2312


?
?root


?
?root


?
?
?


配置数据源





java:comp/env/jdbc/datasourcename







net.sf.hibernate.connection.DatasourceConnectionProvider


net.sf.hibernate.dialect.SQLServerDialect






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



……



……



user



pass


5


20


1800


50
……


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