Hibernate常⽤配置⽂件详解
Hibernate中配置主要分为两种:⼀种包含了Hibernate与数据库的基本连接信息,在Hibernate⼯作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;另⼀种包含了Hibernate的基本映射信息,即系统中每⼀个类与其对应的数据库表之间的关联信息,在Hibernate⼯作的初始阶段,这些信息通过l的mapping节点被加载到Configuration和SessionFactory实例。这两种⽂件信息包含了Hibernate的所有运⾏期参数。下⾯我们⽤详细的例⼦来说明这两种⽂件的基本结构和内容。
实现包含了Hibernate与数据库的基本连接信息的配置⽅式有两种⽅式:
第⼀种是使⽤hibernate.properties⽂件作为配置⽂件。
第⼆种是使⽤l⽂件作为配置⽂件。
1. 使⽤hibernateproperties作为配置⽂件
对于hibernate.properties作为配置⽂件的⽅式,⽐较适合于初学者。因为初学者往往很难记住xml配置⽂件的格式,以及需要配置哪些属性。在Hibernate发布包的etc路径下,提供了⼀个hibernate.properties⽂件,该⽂件列出了Hibernate 的所有属性。每个配置段都给出了⼤致的注释,⽤
户只要取消所需配置段的注释,就可以快速配置Hibernate和数据库的链接此处给出使⽤hibernate.properties⽂件创建Configuration对象的⽅法。
//实例化configuration对象
Configuration cfg = new Configuration()
//多次调⽤addResource()⽅法,添加映射⽂件
cfg.addResource("l")
cfg.addResource("l");
查看hibernate.properties⽂件发现,该⽂件没有提供Hibernate映射⽂件的⽅式。因此使⽤hibernate.properties⽂件来作为配置⽂件时,必须使⽤Configuration的.addResource()⽅法,使⽤该⽅法来添加映射⽂件。
注意:正如上⾯的代码所⽰,使⽤hibernate.properties⽂件配置Hibernate的属性固然简单,但是因为要⼿动添加映射⽂件,当映射⽂件极其多时,这是⼀件⾮常催⼈泪下的事情。这也就是在实际开发中,不常使⽤hibernate.properties⽂件作为配置⽂件的原因。
当然还有另⼀种添加配置⽂件的策略,因为映射⽂件和持久化类是⼀⼀对应的,可以通过Configuration对象来添加持久化类,让Hibernate⾃⼰来搜索映射⽂件。
//实例化configuration对象
Configuration cfg = new Configuration()
//多次调⽤addClass()⽅法,直接添加持久化类
cfg .addClass(ppp.Item.class)
cfg .addClass(ppp.BId.class);
2. 使⽤l作为配置⽂件
关于xml配置形式,我感觉也没必要多说什么。下⾯的⼀个例⼦⾜以把这种配置说明清楚,下⾯我们⼀起来看⼀个带有详细注释的l⽂件:
<!--标准的XML⽂件的起始⾏,version='1.0'表明XML的版本,encoding='gb2312'表 明XML⽂件的编码⽅式--> <?xml version='1.0'encoding='gb2312'?>python convert函数
<!--表明解析本XML⽂件的DTD⽂档位置,DTD是DocumentType Definition 的缩写,
即⽂档类型的定义,XML解析器使⽤DTD⽂档来检查XML⽂件的合法性。
hibernate.sourceforge/hibernate-configuration-3.0dtd可以在
Hibernate3.1.3软件包中的src\org\hibernate⽬录中到此⽂件-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"hibernate.sourceforge/hibernate-configuration-3.0.dtd">
<!--声明Hibernate配置⽂件的开始-->
beginpath<hibernate-configuration>
<!--表明以下的配置是针对session-factory配置的,SessionFactory是
Hibernate中的⼀个类,这个类主要负责保存HIbernate的配置信息,以及对Session的
操作-->
<session-factory>
<!--配置数据库的驱动程序,Hibernate在连接数据库时,需要⽤到数据库的驱
动程序-->
<property name="tion.driver_class"&sql.jdbc.Driver</property>
<!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表⽰mysql服务器名称,此处为本机,hibernate是数据库名-->
<property name="tion.url"> jdbc:mysql://localhost/hibernate</property>
<!--连接数据库是⽤户名-->
<property name="tion.username">root</property>
隋田力事件最新消息<!--连接数据库是密码-->
<property name="tion.password">123456</property>
<!--数据库连接池的⼤⼩-->
<propertynamepropertyname="tion.pool.size">20</property>
<!--是否在后台显⽰Hibernate⽤到的SQL语句,开发时设置为true,便于差错,程序运⾏时可以在Eclipse的控制台显⽰Hibernate的执⾏Sql语句。项⽬部署后可
以设置为false,提⾼运⾏效率-->
<propertynamepropertyname="hibernate.show_sql">true</property>
<!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。FetchSize设的越⼤,读数据库的次数越少,速度越快,Fetch Size越⼩,读数据库的次数越多,速度越慢-->
<propertynamepropertyname="jdbc.fetch_size">50</property>
<!--jdbc.batch_size是指Hibernate批量插⼊,删除和更新时每次操作的记录数。BatchSize越⼤,批量操作的向数据库发送Sql的次数越少,速度就越快,同样
耗⽤内存就越⼤-->
<propertynamepropertyname="jdbc.batch_size">23</property>
<!--jdbc.use_scrollable_resultset是否允许Hibernate⽤JDBC的可滚动的结果集。对分页的结果集。对分页时的设置⾮常有帮助-->
<propertynamepropertyname="jdbc.use_scrollable_resultset">false</property>
<!--connection.useUnicode连接数据库时是否使⽤Unicode编码-->
<propertynamepropertyname="Connection.useUnicode">true</property>
<!--connection.characterEncoding连接数据库时数据的传输字符集编码⽅式,最好设置为gbk,⽤gb2312有的字符不全-->
<propertynamepropertyname="connection.characterEncoding">gbk</property>
<!--hibernate.dialect 只是Hibernate使⽤的数据库⽅⾔,就是要⽤Hibernate连接那种类型的数据库服务器。-->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect</property>
<!--是否⾃动创建数据库表 他主要有⼀下⼏个值:
properties是什么文件validate:当sessionFactory创建时,⾃动验证或者schema定义导⼊数据库。
create:每次启动都drop掉原来的schema,创建新的。
create-drop:当sessionFactory明确关闭时,drop掉schema。
update(常⽤):如果没有schema就创建,有就更新。
-->
<propertynamepropertyname="hbm2ddl.auto">create</property>
<!配置此处 CurrentSession()可以完成⼀系列的⼯作,当调⽤时, hibernate将session绑定到当前线程,事务结束后,hibernate
将session从当前线程中释放,并且关闭session。当再次调⽤getCurrentSession
()时,将得到⼀个新的session,并重新开始这⼀系列⼯作。-->
this的音标怎么写<propertynamepropertyname="current_session_context_class">thread</property>
<!--指定映射⽂件为“hibernate/ch1/l”-->
<mappingresourcemappingresource="org/mxg/l">shellyliu的束腰价格
</session-factory>
</hibernate-configuration>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论