Struts+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调用的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值