具体操作-在WSAD上用Hibernate

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,将如下配置复制到此文件中:




java:comp/env/jdbc/demo
false
true
net.sf.hibernate.dialect.DB2Dialect




此时,你会看到保存出错,其实这个错误并不影响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文件,这个自动产生的工具据说在映射复杂的情况下,表现不佳,需要较多的手工修改。保留一下部分:


"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">










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

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



<%@ page
language="java"
c
pageEncoding="GB18030"
%>
<%@ page import= "java.sql.* "%>
<%@ page import= "com.jaq.po.* "%>
<%@ page import= "net.sf.hibernate.* "%>
<%@ page import= "net.sf.hibernate.cfg.* "%>


demoDBCP.jsp


<%
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();
}
%>


如果找不到类的路径,可以在“项目”->“属性”中的java构建路径,中添加新的jar包,或者文件夹,我把hibernate2.jar加入到了此项目的java构建路径当中。当然也可以通过别的途径让编译器找到你需要引用的类。
7.运行
右键点击Demo.jsp文件,选择“在服务器上运行”。如果运气够好,运行完之后,你就可以从数据库的demo表中查看到你刚插入的那条记录。

你可能感兴趣的:(web开发,Struts,java基础)