当前位置: 首页 > 图文教程 > Java技术 > 数据库持久层 > 数据库持久层:hibernate的配置信息

数据库持久层
持久层设计和数据库设计的原则
关于php的数据库持久层设计
在 SCA Module 中使用 Hibernate 框架实现数据持久层
流行持久层框架对数据库操作
Hibernate持久层操作
hibernate 的 log4j.properties 配置文件
Hibernate的映射类型 hibernate mysql映射类型
hibernate的findByExample
持久化对象PO
终于用hibernate把数据持久层写完了 小结下遇到的一些问题
理解PO类在数据层和VO类在逻辑层的区别
hibernate中使用session之一
hibernate映射到mysql数据库时应该注意的几点
在Struts和Hibernate之间搭起桥梁
Hibernate技术文章-基本配置和写法
Hibernate技术
Hibernate详解
Java数据库编程中的技巧
Hibernate 实体关联关系映射----总结
Hibernate中二级缓存的配置和使用

数据库持久层:hibernate的配置信息


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 96 ::
收藏到网摘: n/a

      java的web框架Hibernate同时支持xml 格式的配置文件,以及传统的properties文件配置方式,不过这

里建议采用xml 型配置文件。xml配置文件提供了更易读的结构和更强的配置能力,可以直

接对映射文件加以配置,而在properties文件中则无法配置,必须通过代码中的Hard Coding

加载相应的映射文件。下面如果不作特别说明,都指的是基于xml 格式文件的配置方式。

配置文件名默认为“hibernate.cfg.xml”(或者hibernate.properties),Hibernate 初始化期

间会自动在CLASSPATH 中寻找这个文件,并读取其中的配置信息,为后期数据库操作做好

准备。

配置文件应部署在CLASSPATH 中,对于Web 应用而言,配置文件应放置在在

\WEB-INF\classes 目录下。

一个典型的hibernate.cfg.xml配置文件如下:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration

PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-2.0.

dtd">

<hibernate-configuration>

<!- SessionFactory 配置-->

<session-factory>

<!- 数据库URL -->

<property name="hibernate.connection.url">

jdbc:mysql://localhost/sample

</property>

<!- 数据库JDBC驱动-->

<property name="hibernate.connection.driver_class">

org.gjt.mm.mysql.Driver

</property>

<!- 数据库用户名-->

<property name="hibernate.connection.username">

User

</property>

<!- 数据库用户密码-->

<property name="hibernate.connection.password">

Mypass

</property>

<!--dialect ,每个数据库都有其对应的Dialet以匹配其平台特性-->

<property name="dialect">

net.sf.hibernate.dialect.MySQLDialect

</property>

<!- 是否将运行期生成的SQL输出到日志以供调试-->

<property name="hibernate.show_sql">

True

</property>

<!- 是否使用数据库外连接-->

<property name="hibernate.use_outer_join">

True

</property>

<!- 事务管理类型,这里我们使用JDBC Transaction -->

<property name="hibernate.transaction.factory_class">

net.sf.hibernate.transaction.JDBCTransactionFactory

</property>

<!映射文件配置,注意配置文件名必须包含其相对于根的全路径-->

<mapping resource="net/xiaxin/xdoclet/TUser.hbm.xml"/>

<mapping resource="net/xiaxin/xdoclet/TGroup.hbm.xml"/>

</session-factory>

</hibernate-configuration>

一个典型的hibernate.properties配置文件如下:

hibernate.dialect net.sf.hibernate.dialect.MySQLDialect

hibernate.connection.driver_class org.gjt.mm.mysql.Driver

hibernate.connection.driver_class com.mysql.jdbc.Driver

hibernate.connection.url jdbc:mysql:///sample

hibernate.connection.username user

hibernate.connection.password mypass

第一段代码

上面我们已经完成了Hiberante 的基础代码,现在先从一段最简单的代码入手,感受一

Hibernate所提供的强大功能。

下面这段代码是一个JUnit TestCase,演示了TUser 对象的保存和读取。考虑到读者可能没有JUnit的使用经验,代码中加入了一些JUnit相关注释。

public class HibernateTest extends TestCase {

Session session = null;

/**

* JUnitsetUp方法在TestCase初始化的时候会自动调用

* 一般用于初始化公用资源

*此例中,用于初始化Hibernate Session

*/

protected void setUp(){

try {

/**

*采用hibernate.properties配置文件的初始化代码:

* Configuration config = new Configuration();

* config.addClass(TUser.class);

*/

//采用hibernate.cfg.xml配置文件

//请注意初始化Configuration时的差异:

// 1.Configuration的初始化方式

// 2.xml文件中已经定义了Mapping文件,因此无需再Hard Coding导入

// POJO文件的定义

Configuration config = new Configuration().configure();

SessionFactory sessionFactory =

config.buildSessionFactory();

session = sessionFactory.openSession();

} catch (HibernateException e) {

e.printStackTrace();

}

}

/**

*setUp方法相对应,JUnit TestCase执行完毕时,会自动调用tearDown方法

*一般用于资源释放

*此例中,用于关闭在setUp方法中打开的Hibernate Session

*/

protected void tearDown(){

try {

session.close();

} catch (HibernateException e) {

e.printStackTrace();

}

}

/**

* 对象持久化(Insert)测试方法

*

* JUnit中,以test作为前缀的方法为测试方法,将被JUnit自动添加

* 到测试计划中运行

*/

public void testInsert(){

try {

TUser user = new TUser();

user.setName("Emma");

session.save(user);

session.flush();

} catch (HibernateException e) {

e.printStackTrace();

Assert.fail(e.getMessage());

}

}

/**

* 对象读取(Select)测试

* 请保证运行之前数据库中已经存在name=Erica的记录

*/

public void testSelect(){

String hql=

" from TUser where name='Erica'";

try {

List userList = session.find(hql);

TUser user =(TUser)userList.get(0);

Assert.assertEquals(user.getName(),"Erica");

} catch (HibernateException e) {

e.printStackTrace();

Assert.fail(e.getMessage());

}

}

}

主流IDE,如EclipseIntellij IDEA JBuilder 中都内置了JUnit支持。下面是Eclipse

中运行该代码的结果(在Run菜单中选择Run as -> JUnit Test即可):

现在我们已经成功实现了一个简单的TUser 实例的保存和读取。可以看到,程序中通过

少量代码实现了Java 对象和数据库数据的同步,同时借助Hibernate的有力支持,轻松实现

了对象到关系型数据库的映射。

相对传统的JDBC数据访问模式,这样的实现无疑更符合面向对象的思想,同时也大大

提高了开发效率。