我们所要建的应用非常简单,只是利用hibernate3.0对一张表进行操作。 软件环境: 1.Eclipse3.1.2; 2.MyEclipse4.1.0; 3.MySql Server 5.0 ; 4.MySql Java Connector J 5.0.4; 5.hibernate3.0 Core Libraries; 6.hibernate3.0 Advanced Libraries; 参考书籍及文档: <<深入浅出Hibernate>>夏昕,唐勇,曹晓刚 MyEclipse Help Content
整个应用的创建依以下步骤完成: (1)新建一个名为hibernatetest的mysql schema;
(2)创建一张名为User的表格,其语句如下: CREATE TABLE `hibernatetest`.`User` ( `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL, `sex` CHAR NOT NULL, `age` TINYINT UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB;
(3)打开MyEclipse的DB Browser视图,在右击选项菜单(Context Menu)上选择New...,弹出Database
Profile对话框,用于新建一个Profile,填入以下信息: <3.1>Profile Name: localhost_mysql_profile; <3.2>Driver: 打开Configure database driver链接,配置jdbc驱动,我们只需加入MySql
Connector J的JDBC驱动即可; <3.3>URL: jdbc: mysql://127.0.0.1:3306/hibernatetest; <3.4>User Name: 用户名; <3.5>Password: 密码; 创建完profile后,尝试一下连接至数据库,成功即可;
(4)在Eclipse中新建一个名为HibernateSample的Java项目; <4.1>创建一个名为config的目录,用于放置hibernate.cfg.xml; <4.2>创建一个名为mappings的目录,用于放置映射文件; (5)在HibernateSample项目的右击选项菜单中,选择MyEclipse->Add Hibernate Capabilities...这
样会弹出一个Hibernate Support for MyEclipse的对话框: <5.1>第一步是选择要添加到工程的包,我们把Hibernate3.0的Core及Advanced包都勾上; <5.2>第二步是否创建hibernate.cfg.xml,我们把configuration folder设定为src\config; <5.3>第三步是指定数据库连接细节(specify database connection details),我们只需名为
localhost_mysql_profile即可,因为我们之前已经进行了设置; <5.4>第四步问你是否创建SessionFactory,这个SessionFactory其实是Hibernate提供的一个用于
管理Session的类,它可以确保在每个独立的线程中Session是唯一的,我们创建名为
cn.com.test.hibernatesample.factory.HibernateSessionFactory的类; 通过上述的四步,现在的工程里面已经拥有了hibernate所需的包及配置文件。 (6)在src目录下创建一个名为log4j.properties的文件,内容如下: ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=error 因为hibernate是通过log4j进行日志管理的,所以加上这个会比较好,不加会在运行时出错。
(7)创建cn.com.test.hibernatesample.model.User类,篇幅所限,大致如下 ------------------------------------------------------------------------- package cn.com.test.hibernatesample.model; public class User {
private Integer id; private String name; private char sex; private byte age;
//后面是一堆的setter,getter,用于set及get各个属性 } ------------------------------------------------------------------------------
(8)在工程的mappings(在第4步创建的目录)目录下创建一个名为User.hbm.xml,内容如下: "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
(9)在HibernateSample项目的右击选项菜单中,选择New -> JUnit Test Case...,弹出新建JUnit
Test Case的对话框: <9.1>package上输入:cn.com.test.hibernatesample.test; <9.2>type上输入UserTest; <9.3>在which method stubs whould you like to create中勾上setUp(),tearDown(); 整个UserTest类的代码如下:
--------------------------------------------------------------------------------- package cn.com.test.hibernatesample.test;
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction;
import cn.com.test.hibernatesample.factory.HibernateSessionFactory; import cn.com.test.hibernatesample.model.User;
import junit.framework.Assert; import junit.framework.TestCase;
public class UserTest extends TestCase {
//hibenate的session对象 private Session session = null; protected void setUp() throws Exception { super.setUp(); session = HibernateSessionFactory.currentSession(); } public void testUserInsert() { Transaction tran = null; try { tran = session.beginTransaction(); User user = new User(); user.setName("suhaoyuan"); user.setSex('M'); user.setAge(Byte.parseByte("27")); session.save(user); tran.commit(); Assert.assertEquals(.getId().intValue() > 0, true); } catch(HibernateException ex) { ex.printStackTrace(); Assert.fail(ex.getMessage()); if(tran != null) { try { tran.rollback(); } catch(HibernateException tranEx) { tranEx.printStackTrace(); } } } }
protected void tearDown() throws Exception { super.tearDown(); HibernateSessionFactory.closeSession(); }
} ----------------------------------------------------------------------------
(10)运行刚创建的UserTest测试用例即完成该应用; (责任编辑:包春林)
|