Struts+Hibernate模板开发笔记(一)

本文详细介绍了使用Struts+Hibernate开发模板的全过程,包括建立数据库联结池、测试数据库,进行Hibernate配置,将数据库表映射为类,定义模板中的包,运用多种设计模式,自定义标签,以及解决汉字编码问题等内容。

本文详述了使用 Struts+Hibernate开发模板的全过程,本文共有以下内容:

一、建立数据库联结池

二、建立测试数据库

三、建立Hibernate配置Hibernate配置

四、把数据库的表映射为类

五、模板中的包定义

六、设计模式:单例

七、设计模式:门面

八、设计模式:DAO

九、设计模式:MVC

十、自定义标签

十一、解决汉字编码问题

Struts+Hibernate模板开发笔记---建立数据库联结池

   

1.把数据库驱动程序拷入Tomcat5.0的common/lib目录下.

如:oracle9i拷贝ojdbc14.jar

2.修改TOMCAT配置文件conf/server.xml.在</host>之前加入如下代码:

<Context path="/demo" docBase="F:/j_work/working/demo/demo" 
debug="5" reloadable="true" crossContext="true"> 
<Logger className="org.apache.catalina.logger.FileLogger" 
prefix="localhost_DBTest_log." suffix=".txt" 
timestamp="true"/> 
<Resource name="jdbc/demo" auth="Container" 
type="javax.sql.DataSource"/> 
<ResourceParams name="jdbc/demo"> 
<parameter> 
<name>factory</name> 
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 
</parameter> 
<parameter> 
<name>driverClassName</name> 
<value>oracle.jdbc.driver.OracleDriver</value> 
</parameter> 
<parameter> 
<name>url</name> 
<value>jdbc:oracle:thin:@192.168.3.200:1521:demo</value> 
</parameter> 
<parameter> 
<name>username</name> 
<value>demo</value> 
</parameter> 
<parameter> 
<name>password</name> 
<value>demo</value> 
</parameter> 
<parameter> 
<name>maxActive</name> 
<value>20</value> 
</parameter> 
<parameter> 
<name>maxIdle</name> 
<value>10</value> 
</parameter> 
<parameter> 
<name>maxWait</name> 
<value>-1</value> 
</parameter> 
</ResourceParams> 
</Context>
 Struts+Hibernate模板开发笔记---建立测试数据库
 

  

1.建立数据库用户名 demo 密码 demo

2.建立测试表

建立测试表 demo

字段说明 id char(100)      
主键 name varchar2(50)   
名字 image_id number(10)  
图片id system_date date    
系统日期 user_date date    
录入日期

建立图片索引表 image

字段说明 id char(100)            
主键 title varchar2(50)         
图片标题 message varchar2(2000)       
图片信息 original_image_path varchar(200) 
原始图片保存路径 small _image_path varchar(200)  
小图片保存路径 image_id number(10)         
图片id system_date date          
系统日期

id索引表 Singleton_Id

字段说明 id char(100)     
主键 name varchar2(50)  
索引名(需要为此字段建索引) value number(10)  
索引id

 Struts+Hibernate模板开发笔记---建立Hibernate配置

1.拷贝Oracle9i数据库驱动程序ojdbc14.jar到JBUILDER9安装目录的LIB目录下.用JBUILDER9.0建立PROJECT工程.

2.把如下hibernate-2.0.3必须的库文件包含在工程中.

hibernate2.jar commons-beanutils.jar commons-collections.jar 
commons-dbcp.jar commons-lang.jar commons-logging.jar commons-pool.jar dom4j.jar
cglib-asm.jar connector.jar

3.建立 hibernate.cfg.xml文件,并拷到SRC目录

<?xml version='1.0' encoding='utf-8'?> 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">true</property> <property name="use_outer_join">true</property> <property name="dialect">net.sf.hibernate.dialect.Oracle9Dialect</property> </SESSION-FACTORY> </HIBERNATE-CONFIGURATION>


Struts+Hibernate模板开发笔记---把数据库的表映射为类

下载 hibernate-extensions 压缩包. 修改 setenv.bat文件中的环境变量.主要修改Hibernate的目录和数据库驱动程序文件名.

例如:

@echo off 
rem -------------------------------------------------------------------
rem Setup environment for hibernate tools
rem -------------------------------------------------------------------
set JDBC_DRIVER=../../../lib/ojdbc14.jar
set HIBERNATE_HOME=../../../hibernate-2.0.3
set CORELIB=%HIBERNATE_HOME%/lib
set LIB=../lib
set PROPS=%HIBERNATE_HOME%/src
set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%/hibernate2.jar;
%CORELIB%/commons-logging.jar;%CORELIB%/commons-collections.jar; %CORELIB%/commons-lang.jar;%CORELIB%/cglib.jar;
%CORELIB%/dom4j.jar;%CORELIB%/odmg.jar;%CORELIB%/xml-apis.jar;%CORELIB%/xerces.jar; %CORELIB%/xalan.jar;%LIB%/jdom.jar;%LIB%/../hibernate-tools.jar

运行ddl2hbm.bat, 设置参数如下:

[ CONNECTION ] 
DRIVER CLASS : oracle.jdbc.driver.OracleDriver         (org.gjt.mm.mysql.Driver)
CONNECTION URL: jdbc:oracle:thin:@192.168.3.200:1521:demo    
(jdbc:mysql://localhost/authority) USER: demo PASSWORD: demo [ MAPPING ] KEY FIELD : id SCHEMAEXPORT : uuid.hex [ CODE ] PACKAGE NAME: com.company.demo.jdo [ OUTPUT ] F:/j_work/working/demo/src

其它的用默认值,点[TABLES]的tables..选择表,程序生成类和xml

生成的文件如下:

(1)image.java

package com.company.demo.jdo; 
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Image implements Serializable {
/** identifier field */
private String id;
/** nullable persistent field */
private String title;
/** nullable persistent field */
private String message;
/** nullable persistent field */
private String originalImagePath;
/** nullable persistent field */
private String smallImagePath;
/** nullable persistent field */
private long imageId;
/** nullable persistent field */
private Date systemDate;
/** full constructor */
public Image(String title, String message, String originalImagePath, 
String smallImagePath, long imageId, Date systemDate) { this.title = title; this.message = message; this.originalImagePath = originalImagePath; this.smallImagePath = smallImagePath; this.imageId = imageId; this.systemDate = systemDate; } /** default constructor */ public Image() { } public String getId() { return this.id; } public void setId(String id) { this.id = id; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public String getOriginalImagePath() { return this.originalImagePath; } public void setOriginalImagePath(String originalImagePath) { this.originalImagePath = originalImagePath; } public String getSmallImagePath() { return this.smallImagePath; } public void setSmallImagePath(String smallImagePath) { this.smallImagePath = smallImagePath; } public long getImageId() { return this.imageId; } public void setImageId(long imageId) { this.imageId = imageId; } public Date getSystemDate() { return this.systemDate; } public void setSystemDate(Date systemDate) { this.systemDate = systemDate; } public String toString() { return new ToStringBuilder(this) .append("id", getId()) .toString(); } public boolean equals(Object other) { if ( !(other instanceof Image) ) return false; Image castOther = (Image) other; return new EqualsBuilder() .append(this.getId(), castOther.getId()) .isEquals(); } public int hashCode() { return new HashCodeBuilder() .append(getId()) .toHashCode(); } }

(2)Image.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.company.demo.jdo.Image" schema="DEMO" table="IMAGE"> <id column="ID" name="id" type="string"> <generator class="uuid.hex"/> </id> <property column="TITLE" length="50" name="title" type="string"/> <property column="MESSAGE" length="2000" name="message" type="string"/> <property column="ORIGINAL_IMAGE_PATH" length="200" name="originalImagePath"
type="string"/> <property column="SMALL_IMAGE_PATH" length="200" name="smallImagePath" type="string"/> <property column="IMAGE_ID" length="10" name="imageId" type="long"/> <property column="SYSTEM_DATE" length="7" name="systemDate" type="timestamp"/> </class> </hibernate-mapping>

其它生成的文件略!

Struts+Hibernate模板开发笔记---模板中的包定义

com.company.demo.dataModule   数据模型

com.company.demo.dao       DAO模型

com.company.demo.exception    异常

com.company.demo.jdo      hibernate类映射  

com.company.demo.start      启动JSP服务时加载的类

com.company.demo.tags      自定义标签类

com.company.demo.thread     线程类

com.company.demo.util      工具类

com.company.demo.web      
Struts

com.company.demo.facade     Facade调用的类

2.把如下hibernate-2.0.3必须的库文件包含在工程中.

hibernate2.jar commons-beanutils.jar commons-collections.jar 
commons-dbcp.jar commons-lang.jar commons-logging.jar commons-pool.jar dom4j.jar
cglib-asm.jar connector.jar

3.建立 hibernate.cfg.xml文件,并拷到SRC目录

<?xml version='1.0' encoding='utf-8'?> 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">true</property> <property name="use_outer_join">true</property> <property name="dialect">net.sf.hibernate.dialect.Oracle9Dialect</property> </SESSION-FACTORY> </HIBERNATE-CONFIGURATION>


Struts+Hibernate模板开发笔记---把数据库的表映射为类

下载 hibernate-extensions 压缩包. 修改 setenv.bat文件中的环境变量.主要修改Hibernate的目录和数据库驱动程序文件名.

例如:

@echo off 
rem -------------------------------------------------------------------
rem Setup environment for hibernate tools
rem -------------------------------------------------------------------
set JDBC_DRIVER=../../../lib/ojdbc14.jar
set HIBERNATE_HOME=../../../hibernate-2.0.3
set CORELIB=%HIBERNATE_HOME%/lib
set LIB=../lib
set PROPS=%HIBERNATE_HOME%/src
set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%/hibernate2.jar;
%CORELIB%/commons-logging.jar;%CORELIB%/commons-collections.jar; %CORELIB%/commons-lang.jar;%CORELIB%/cglib.jar;
%CORELIB%/dom4j.jar;%CORELIB%/odmg.jar;%CORELIB%/xml-apis.jar;%CORELIB%/xerces.jar; %CORELIB%/xalan.jar;%LIB%/jdom.jar;%LIB%/../hibernate-tools.jar

运行ddl2hbm.bat, 设置参数如下:

[ CONNECTION ] 
DRIVER CLASS : oracle.jdbc.driver.OracleDriver         (org.gjt.mm.mysql.Driver)
CONNECTION URL: jdbc:oracle:thin:@192.168.3.200:1521:demo    
(jdbc:mysql://localhost/authority) USER: demo PASSWORD: demo [ MAPPING ] KEY FIELD : id SCHEMAEXPORT : uuid.hex [ CODE ] PACKAGE NAME: com.company.demo.jdo [ OUTPUT ] F:/j_work/working/demo/src

其它的用默认值,点[TABLES]的tables..选择表,程序生成类和xml

生成的文件如下:

(1)image.java

package com.company.demo.jdo; 
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Image implements Serializable {
/** identifier field */
private String id;
/** nullable persistent field */
private String title;
/** nullable persistent field */
private String message;
/** nullable persistent field */
private String originalImagePath;
/** nullable persistent field */
private String smallImagePath;
/** nullable persistent field */
private long imageId;
/** nullable persistent field */
private Date systemDate;
/** full constructor */
public Image(String title, String message, String originalImagePath, 
String smallImagePath, long imageId, Date systemDate) { this.title = title; this.message = message; this.originalImagePath = originalImagePath; this.smallImagePath = smallImagePath; this.imageId = imageId; this.systemDate = systemDate; } /** default constructor */ public Image() { } public String getId() { return this.id; } public void setId(String id) { this.id = id; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public String getOriginalImagePath() { return this.originalImagePath; } public void setOriginalImagePath(String originalImagePath) { this.originalImagePath = originalImagePath; } public String getSmallImagePath() { return this.smallImagePath; } public void setSmallImagePath(String smallImagePath) { this.smallImagePath = smallImagePath; } public long getImageId() { return this.imageId; } public void setImageId(long imageId) { this.imageId = imageId; } public Date getSystemDate() { return this.systemDate; } public void setSystemDate(Date systemDate) { this.systemDate = systemDate; } public String toString() { return new ToStringBuilder(this) .append("id", getId()) .toString(); } public boolean equals(Object other) { if ( !(other instanceof Image) ) return false; Image castOther = (Image) other; return new EqualsBuilder() .append(this.getId(), castOther.getId()) .isEquals(); } public int hashCode() { return new HashCodeBuilder() .append(getId()) .toHashCode(); } }

(2)Image.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.company.demo.jdo.Image" schema="DEMO" table="IMAGE"> <id column="ID" name="id" type="string"> <generator class="uuid.hex"/> </id> <property column="TITLE" length="50" name="title" type="string"/> <property column="MESSAGE" length="2000" name="message" type="string"/> <property column="ORIGINAL_IMAGE_PATH" length="200" name="originalImagePath"
type="string"/> <property column="SMALL_IMAGE_PATH" length="200" name="smallImagePath" type="string"/> <property column="IMAGE_ID" length="10" name="imageId" type="long"/> <property column="SYSTEM_DATE" length="7" name="systemDate" type="timestamp"/> </class> </hibernate-mapping>

其它生成的文件略!

Struts+Hibernate模板开发笔记---模板中的包定义

com.company.demo.dataModule   数据模型

com.company.demo.dao       DAO模型

com.company.demo.exception    异常

com.company.demo.jdo      hibernate类映射  

com.company.demo.start      启动JSP服务时加载的类

com.company.demo.tags      自定义标签类

com.company.demo.thread     线程类

com.company.demo.util      工具类

com.company.demo.web      
Struts

com.company.demo.facade     Facade调用的类

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值