我们所要建的应用非常简单只是利用hibernate对一张表进行操作
软件环境
Eclipse
MyEclipse
MySql Server
MySql Java Connector J
hibernate Core Libraries
hibernate Advanced Libraries
参考书籍及文档
<<深入浅出Hibernate>>夏昕唐勇曹晓刚
MyEclipse Help Content
整个应用的创建依以下步骤完成
()新建一个名为hibernatetest的mysql schema
()创建一张名为User的表格其语句如下
CREATETABLE`hibernatetest``User`(
`id`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT
`name`VARCHAR()NOTNULL
`sex`CHARNOTNULL
`age`TINYINTUNSIGNEDNOTNULL
PRIMARYKEY(`id`)
)
ENGINE=InnoDB;
()打开MyEclipse的DB Browser视图在右击选项菜单(Context Menu)上选择New……弹出Database
Profile对话框用于新建一个Profile填入以下信息
<>Profile Name localhost_mysql_profile
<>Driver 打开Configure database driver链接配置jdbc驱动我们只需加入MySql
Connector J的JDBC驱动即可
<>URL jdbc mysql:///hibernatetest
<>User Name 用户名
<>Password 密码
创建完profile后尝试一下连接至数据库成功即可
()在Eclipse中新建一个名为HibernateSample的Java项目
<>创建一个名为config的目录用于放置hibernatecfgxml
<>创建一个名为mappings的目录用于放置映射文件
()在HibernateSample项目的右击选项菜单中选择MyEclipse>Add Hibernate Capabilities……这
样会弹出一个Hibernate Support for MyEclipse的对话框
<>第一步是选择要添加到工程的包我们把Hibernate的Core及Advanced包都勾上
<>第二步是否创建hibernatecfgxml我们把configuration folder设定为src\config
<>第三步是指定数据库连接细节(specify database connection details)我们只需名为
localhost_mysql_profile即可因为我们之前已经进行了设置
<>第四步问你是否创建SessionFactory这个SessionFactory其实是Hibernate提供的一个用于
管理Session的类它可以确保在每个独立的线程中Session是唯一的我们创建名为
testhibernatesamplefactoryHibernateSessionFactory的类
通过上述的四步现在的工程里面已经拥有了hibernate所需的包及配置文件
()在src目录下创建一个名为logjproperties的文件内容如下
###directlogmessagestostdout###
logjappenderstdout=orgapachelogjConsoleAppender
logjappenderstdoutTarget=Systemout
logjappenderstdoutlayout=orgapachelogjPatternLayout
logjappenderstdoutlayoutConversionPattern=%d{ABSOLUTE}
%p%c{}:%L%m%n
logjrootLogger=warnstdout
hibernate=error
因为hibernate是通过logj进行日志管理的所以加上这个会比较好不加会在运行时出错
()创建testhibernatesamplemodelUser类篇幅所限大致如下
packagetesthibernatesamplemodel;
publicclassUser{
privateIntegerid;
privateStringname;
privatecharsex;
privatebyteage;
//后面是一堆的settergetter用于set及get各个属性
}
()在工程的mappings(在第步创建的目录)目录下创建一个名为Userhbmxml内容如下
mappingdtd>
()在HibernateSample项目的右击选项菜单中选择New > JUnit Test Case……弹出新建JUnit
Test Case的对话框
<>package上输入testhibernatesampletest
<>type上输入UserTest
<>在which method stubs whould you like to create中勾上setUp()tearDown()
整个UserTest类的代码如下
packagetesthibernatesampletest;
importorghibernateHibernateException;
importorghibernateSession;
importorghibernateTransaction;
importtesthibernatesamplefactoryHibernateSessionFactory;
importtesthibernatesamplemodelUser;
importjunitframeworkAssert;
importjunitframeworkTestCase;
publicclassUserTestextendsTestCase{
//hibenate的session对象
privateSessionsession=null;
protectedvoidsetUp()throwsException{
supersetUp();
session=HibernateSessionFactorycurrentSession();
}
publicvoidtestUserInsert(){
Transactiontran=null;
try{
tran=sessionbeginTransaction();
Useruser=newUser();
usersetName(suhaoyuan);
usersetSex(M);
usersetAge(ByteparseByte());
sessionsave(user);
mit();
AssertassertEquals(getId()intValue()>true);
}
catch(HibernateExceptionex){
exprintStackTrace();
Assertfail(exgetMessage());
if(tran!=null){
try{
tranrollback();
}
catch(HibernateExceptiontranEx){
tranExprintStackTrace();
}
}
}
}
protectedvoidtearDown()throwsException{
supertearDown();
HibernateSessionFactorycloseSession();
}
}
()运行刚创建的UserTest测试用例即完成该应用