分享
 
 
 

在WSAD 5.1上使用Hibernate 2.1beta6

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

转自:Demo - 在WSAD 5.1上使用Hibernate 2.1beta6

Roberto Nie, Roberto_nie@163.com

December 25, 2003

Summary

本文介绍在WSAD5.1下实现一个最简单的hibernate实例。

Environment

OS: Windows XP SP1 简体中文版

MEM: 512M

Requirement:

Hibernate 2.1 beta6

Hibernate eclipse plug in 0.9.6

WSAD 5.1

DB2 8.1

Steps:

1:建立demo数据库和表:

在DB2数据库中创建demo数据库,

CREATE DATABASE DEMO;

创建表demo,

CREATE TABLE DB2ADMIN.DEMO

(ID INTEGER NOT NULL,

NAME VARCHAR(100)

)

2::建立一个新的web应用程序

点击“文件”->“新建”->“项目”,在弹出的对话框中,选择“j2ee”, 和“企业级应用程序”,点击下一步,选择“创建j2ee 1.3企业应用程序项目”,点击下一步,项目名称填写demo,点击下一步,在新弹出的对话框中选择“新建模块”,仅仅选择“web项目”,点击完成。

3:配置WAS应用服务器自带的数据库连接池。

创建服务器:

打开服务器透视图,右键点击“服务器”,选择“新建/服务器和服务器配置”,服务器名称填写“was5”,然后选择webSphere V5.0 测试环境,点击完成。

配置JNDI:

在服务器透视图中的服务器配置窗口中打开was5服务器配置,选择“安全性”标签栏,在JAAS认证中中添加认证条目,点击“添加”,然后依次填写别名(demo),用户标识(db2admin),和密码(123456),描述可以不填写。

然后选择“数据源”标签,在JDBC提供程序列表中选择“Default DB2 JDBC Provider”,然后在“在上面选择的JDBC提供的程序中定义的数据源”部分点击“添加”,将弹出“创建数据源”的对话框,选择“DB2 JDBC Provider”和“V5.0 数据源”点击“下一步”。

在这个页面中,名称栏填写“demo”,JNDI名称填写“jdbc/demo”,组件管理认证别名,和容器管理认证别名下拉选择“demo”,不用选择“在容器管理的持久性(CMP)使用该认证名”,其他的使用默认值。选择下一步。

在“资源属性”列表中,选择database name,值填写“demo”;选择“portNumber”,值填写“50000”(这是访问DB2实例的缺省端口)。点击完成。

最后保存设置页。

打开“web”透视图,编辑\webContent\WEB-INF\web.xml(注意打开方式是“部署描述符编辑器”,这样编辑比源文件方式方便)。点击“资源”标签,然后点击“添加”,引用资源的名称改为“jdbc/demo”,类型改为“java.sql.DataSource”。

保存推出。

4.装载hibernate和hibernate eclipse plugin类库

从sourceforge.net上可获取,以上两者的zip文件,我所使用的是hibernate2.1beat6和eclipse plugin 0.9.6。

将hibernate-2.1beta6.zip解压到tmp目录,将hibernate2.jar和tmp\hibernate-2.1\lib下所有的的jar文件复制到workspace_demo\demoWeb\WebContent\WEB-INF下。(或许不需要所有的,但这样省事嘛)

将hibernator-0.9.6.zip解压到WSAD安装目录下的eclipse\plugin目录下。注意,如要此插件支持最新版本的hibernate,需要将hibernate\lib下同名的jar文件和hibernate2.jar的最新版本替代wasd51\eclipse\plugins\hibernator_0.9.6\lib下的jar文件和hibernate2.jar文件。

5.编写hibernate.cfg.xml文件

hibernate可以识别xml和properies文件,据说Hibernate往后的版本将改成使用xml,因此我选择使用xml来配置hibernate。

选择web透视图,在JavaSource目录下,创建hibernate.cfg.xml。创建方法是,右键点击“JavaSource”->“新建”->“其他”->“xml”,依照向导建立一个空的文件名为hibernate.cfg.xml的文件。然后以源码形式打开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>

<session-factory>

<property name="connection.datasource">java:comp/env/jdbc/demo</property>

<property name="show_sql">false</property>

<property name="use_outer_join">true</property>

<property name="dialect">net.sf.hibernate.dialect.DB2Dialect</property>

<!-- Mapping files -->

<mapping resource="com/jaq/po/Demo.hbm.xml"/>

</session-factory>

</hibernate-configuration>

此时,你会看到保存出错,其实这个错误并不影响demo程序的正常运行,但是WSAD在保存之前检查dtd文件的存放位置,由于无法从本地获取,于是它尝试从http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd来的到,这便是你看到的operation time out错误的原因。为了去掉讨厌的红叉,可以这样做,首先将hibernate2.jar解开,从中找到hibernate-configuration-2.0.dtd和hibernate-mapping-2.0.dtd,将他们复制到一个目录下,暂定为c:\tmp。打开“窗口”菜单,选择“首选项”,在“首选项”对话框中选择“XML”->“XML目录”。点击“新建”,在“URL”input框中填写:“file:C:\tmp\hibernate-configuration-2.0.dtd”,键类型选择“公用标识”,在“键”的input框中填写“-//Hibernate/Hibernate Configuration DTD//EN”,同样的方法再添加另一个dtd的XML目录条目,URL和键分别用“file:C:\tmp\hibernate-mapping-2.0.dtd”和“-//Hibernate/Hibernate Mapping DTD//EN”。再保存一次,这下红叉叉就不见了。

6.编写Demo.java和Demo.hbm.xml。

首先建一个包为com.jaq.po,然后再在这个包下面建一个Demo的类。方法都是,右键点击“JavaSource”,然后选择“新建包”和“新建类”,并根据它的向导来创建,在这里不再赘述。现在打开Demo.java文件,添加两个field:private int id,private String name;然后在源文件处右键,选择“源”->“生成setter和getter”,让工具自动帮你生成setter和getter方法。(字段多的时候,这项功能简直帅呆了)。然后通过hibernate插件来帮你生成映射文件,首先打开“窗口”->“显示试图”->“其他”,然后你应该可以看见hibernate的选项(注意,插件安装后要重新启动WSAD,插件解压的目录不对会导致插件无法显示在这个视图中)。选择“Hibernate”->“Hibernate”,点击确定之后,你将看到自动产生的Demo.hbm.xml文件,这个自动产生的工具据说在映射复杂的情况下,表现不佳,需要较多的手工修改。保留一下部分:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

<class name="com.jaq.po.Demo" table="demo">

<id name="id">

<generator class="assigned">

</generator>

</id>

<property name="name"/>

</class>

</hibernate-mapping>

<!-- parsed in 0ms -->

然后保存此映射文件(此文件自动保存在与Demo.java同目录下,程序运行时将会有一份拷贝在Demo.class同目录下)。

7.编写测试页面

右键点击“WebContent”->“新建JSP”,然后,将下面的代码复制到新建的JSP页面中。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>

<%@ page

language="java"

contentType="text/html; charset=GB18030"

pageEncoding="GB18030"

%>

<%@ page import= "java.sql.* "%>

<%@ page import= "com.jaq.po.* "%>

<%@ page import= "net.sf.hibernate.* "%>

<%@ page import= "net.sf.hibernate.cfg.* "%>

<META http-equiv="Content-Type" content="text/html; charset=GB18030">

<META name="GENERATOR" content="IBM WebSphere Studio">

<TITLE>demoDBCP.jsp</TITLE>

</HEAD>

<BODY>

<%

SessionFactory sf = new Configuration().configure().buildSessionFactory();

Session sess = sf.openSession();

Transaction tx = null;

try {

tx = sess.beginTransaction();

Demo demo = new Demo();

demo.setId(1);

demo.setName("roberto");

sess.save(demo);

tx.commit();

}

catch (Exception e) {

if (tx!=null) tx.rollback();

throw e;

}

finally {

sess.close();

}

%>

</BODY>

</HTML>

如果找不到类的路径,可以在“项目”->“属性”中的java构建路径,中添加新的jar包,或者文件夹,我把hibernate2.jar加入到了此项目的java构建路径当中。当然也可以通过别的途径让编译器找到你需要引用的类。

7.运行

右键点击Demo.jsp文件,选择“在服务器上运行”。如果运气够好,运行完之后,你就可以从数据库的demo表中查看到你刚插入的那条记录。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有