在resin3配置hibernate.docx
《在resin3配置hibernate.docx》由会员分享,可在线阅读,更多相关《在resin3配置hibernate.docx(14页珍藏版)》请在冰点文库上搜索。
![在resin3配置hibernate.docx](https://file1.bingdoc.com/fileroot1/2023-5/29/572df880-3b85-42ab-88c8-63db45ec238a/572df880-3b85-42ab-88c8-63db45ec238a1.gif)
在resin3配置hibernate
在resin3.0中配置hibernate2.1.2连mysql
在resin3.0中配置hibernate2.1.2连mysql
Author:
hamal
约定:
resin3\代表resin3.0的安装根目录
hibernate2\代表hibernate2.1.2的安装根目录
1.在resin3\下建立我们的web应用根,如resin3\mydomain目录(mydomain的目录名可以随意取,之后在配置文件中配置即可)
2.在resin3\mydomain目录下分别建立resin3\mydomain\WEB-INF\classes目录和resin3\mydomain\WEB-INF\lib目录。
这两个目录对应本web应用程序上下文的类装载器搜索路径(对于jar来说是resin3\mydomain\WEB-INF\lib,对于class文件来说是resin3\mydomain\WEB-INF\classes)。
我们把这两个路径分别称为应用库类路径(用于存放和本应用相关的jar类库)和上下文类路径(用于存放本应用的class文件和xml配置文件)。
另外还有一个路径是resin3\lib目录,我们称该路径为全局库类路径(存放于resin3服务器上,供该服务器上所有web应用共享使用的相关jar类库)。
3.本示例使用的是mysql数据库,所以我们将mysql的jdbc驱动jar包(mm.mysql-2.0.4-bin.jar)放入resin3\lib目录中,之后该驱动将能被所有web应用所用。
4.将hibernate2\hibernate2.jar文件拷贝到resin3\mydomain\WEB-INF\lib目录下,然后拷贝hibernate2\lib目录下必须的jar文件也拷贝到resin3\mydomain\WEB-INF\lib目录下。
如果你不是很清楚哪些包是你所需要的,可以参看hibernate2\lib\README.txt文件,或者,再简单一点,我们将hibernate2\lib目录下的所有jar文件都拷贝到resin3\mydomain\WEB-INF\lib目录下。
5.现在我们开始配置resin的jdbc数据库连接池。
修改resin3\conf\resin.conf文件
a)搜索webapps,将webapps替换为我们自定义的应用目录mydomain。
b)查找元素,取消该元素的注释状态,该文件的注释采用的是html风格的注释方式---->。
c)将元素修改为如下形式
jdbc/mysql
jdbc:
mysql:
//192.162.125.3:
3306/mysql
root
12345678
8
20
30s
如此resin的jdbc连接池配置完成。
6.将hibernate2\src目录下的hibernate.properties、log4j.properties、oscache.properties文件拷贝到resin3\mydomain\WEB-INF\classes目录下。
7.由于我们使用的是mysql数据库,所以修改hibernate.properties文件中关于mysql部分的配置,并注释掉原默认的HypersonicSQL配置。
注释配置就是在语句前加#符号。
如:
#hibernate.dialectnet.sf.hibernate.dialect.HSQLDialect
下面是一个典型的mysql配置:
hibernate.dialectnet.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_classorg.gjt.mm.mysql.Driver
hibernate.connection.driver_classcom.mysql.jdbc.Driver
hibernate.connection.urljdbc:
mysql:
//192.162.125.3:
3306/mydb
hibernate.connection.usernameroot
hibernate.connection.password12345678
我们需要修改的就是下面3行:
url是指jdbc连接描述符,格式为jdbc:
mysql:
//数据库IP:
端口号/数据库名
username是指用于登陆该数据库的用户名
password该用户密码
8.将hibernate和resin的数据库连接池绑定。
在目录里创建一个hibernate.cfg.xml文件,文件内容如下
xmlversion='1.0'encoding='utf-8'?
>
DOCTYPEhibernate-configuration
PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
"
java:
comp/env/jdbc/mysql
true
net.sf.hibernate.dialect.MySQLDialect
--Mappingfiles-->
该元素告诉hibernate使用resin中定义的jndi来连接数据库,子元素用于描述每一个映射数据库表的配置文件路径,
其声明了User.hbm.xml是一个HibernateXML映射文件,对应持久化类User。
这个文件包含了把POJO类映射到数据库表(或多个数据库表)的元数据。
我们稍后就回来看这个文件。
让我们先编写这个POJO类,再看声明它的映射元数据。
9.在mysql中建立user表该表的格式如下:
User_idPasswordNick_nameE_mail
16666hamalhamal@
26666vampirevampire@
36666andeande@
在resin3\mydomain\WEB-INF\classes目录下分别新建3个java文件:
Test.java、HibernateUtil.java、User.java。
HibernateUtil.java源代码如下:
该类是一个辅助类,用于获得一个静态的SessionFactory,SessionFactory负责一个数据库,也只对应一个XML配置文件(hibernate.cfg.xml)。
importnet.sf.hibernate.*;
importnet.sf.hibernate.cfg.*;
publicclassHibernateUtil{
privatestaticfinalSessionFactorysessionFactory;
static{
try{
sessionFactory=newConfiguration().configure().buildSessionFactory();
}catch(HibernateExceptionex){
thrownewRuntimeException("ExceptionbuildingSessionFactory:
"+ex.getMessage(),ex);
}
}
publicstaticfinalThreadLocalsession=newThreadLocal();
publicstaticSessioncurrentSession()throwsHibernateException{
Sessions=(Session)session.get();
//OpenanewSession,ifthisThreadhasnoneyet
if(s==null){
s=sessionFactory.openSession();
session.set(s);
}
returns;
}
publicstaticvoidcloseSession()throwsHibernateException{
Sessions=(Session)session.get();
session.set(null);
if(s!
=null)
s.close();
}
}
User.java源代码如下:
Hibernate让普通的Java对象(PlainOldJavaObjects,就是POJOs,有时候也称作PlainOrdinaryJavaObjects)变成持久化类。
一个POJO很像JavaBean,属性通过getter和setter方法访问,对外隐藏了内部实现的细节。
publicclassUser{
privateIntegerid;
privateStringnick;
privateStringpassword;
privateStringemail;
publicUser(){
}
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetNick(){
returnnick;
}
publicvoidsetNick(Stringnick){
this.nick=nick;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
}
Test.java源代码如下:
importjavax.naming.*;
importnet.sf.hibernate.*;
importjava.util.*;
publicclassTest{
voidTest(){
}
publicstaticvoidinsert(){
try{
SessionhSession=HibernateUtil.currentSession();
Transactiontx=hSession.beginTransaction();
Usernewp=newUser();
Integerid=newInteger("4");
newp.setId(id);
newp.setNick("love");
newp.setPassword("123");
newp.setEmail("test@");
hSession.save(newp);
mit();
HibernateUtil.closeSession();
}catch(Exceptione){
e.printStackTrace();
}
}
}
10.编写HibernateXML映射文件
在resin3\mydomain\WEB-INF\classes目录下新建User.hbm.xml文件,文件内容如下:
xmlversion="1.0"?
>
DOCTYPEhibernate-mapping
PUBLIC"-//Hibernate/HibernateMappingDTD//EN"
"
简单说明:
元素中的name属性代表的是User类的全路径名(即包名+类名的形式),table属性代表的是该User类映射的数据库表名。
元素代表该表的主键,name属性代表在User类中对应的类属性名。
元素代表该id属性对应的数据库user表中的user_id字段。
11.界面测试:
我们在resin3\mydomain目录下新建一个test.jsp文件如下:
<%@pagecontentType="text/html;charset=gb2312"%>
Thisisatest!Thisisatest!
<%Test.insert();%>
12.测试
好了,现在所有的准备工作都已经做完了,开始测试看看。
我们启动rensin服务器,启动文件为resin3\bin\httpd.exe,双击该文件即可。
在测试前我们看到的mysql中user表的内容如下。
User_idPasswordNick_nameE_mail
16666hamalhamal@
26666vampirevampire@
36666andeande@
现在我们打开IE,在地址栏中输入http:
//localhost:
8080/test.jsp
当界面上正常显示出Thisisatest!
之后,我们再查看数据库内容如下:
User_idPasswordNick_nameE_mail
16666hamalhamal@
26666vampirevampire@
36666andeande@
4123lovetest@
恭喜,你已经完成了本次示例!