Struts+Hibernate模板開發筆記(一)

來源:互聯網
上載者:User

本文詳述了使用 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 toolsrem -------------------------------------------------------------------set JDBC_DRIVER=../../../lib/ojdbc14.jarset HIBERNATE_HOME=../../../hibernate-2.0.3set CORELIB=%HIBERNATE_HOME%/libset LIB=../libset PROPS=%HIBERNATE_HOME%/srcset 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: demoPASSWORD: demo[ MAPPING ]KEY FIELD : idSCHEMAEXPORT : 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 toolsrem -------------------------------------------------------------------set JDBC_DRIVER=../../../lib/ojdbc14.jarset HIBERNATE_HOME=../../../hibernate-2.0.3set CORELIB=%HIBERNATE_HOME%/libset LIB=../libset PROPS=%HIBERNATE_HOME%/srcset 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: demoPASSWORD: demo[ MAPPING ]KEY FIELD : idSCHEMAEXPORT : 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調用的類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.