type="javax.sql.DataSource"/>
factory
mons.dbcp.BasicDataSourceFactory
driverClassName
oracle.jdbc.driver.OracleDriver
url
jdbc:
oracle:
thin:
@192.168.3.200:
1521:
demo
username
demo
password
demo
maxActive
20
maxIdle
10
maxWait
-1
二、建立测试数据库
1.建立数据库用户名demo密码demo
2.建立测试表
建立测试表demo
字段说明
idchar(100) 主键
namevarchar2(50) 名字
image_idnumber(10) 图片id
system_datedate 系统日期
user_datedate 录入日期
建立图片索引表image
字段说明
idchar(100) 主键
titlevarchar2(50) 图片标题
messagevarchar2(2000) 图片信息
original_image_pathvarchar(200) 原始图片保存路径
small_image_pathvarchar(200) 小图片保存路径
image_idnumber(10) 图片id
system_datedate 系统日期
id索引表Singleton_Id
字段说明
idchar(100) 主键
namevarchar2(50) 索引名(需要为此字段建索引)
valuenumber(10) 索引id
三、建立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目录
xmlversion='1.0'encoding='utf-8'?
>
DOCTYPEhibernate-configuration
PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
"
java:
comp/env/jdbc/demo
true
true
net.sf.hibernate.dialect.Oracle9Dialect
--Mappingfiles-->
--mappingresource="com\kmtava\qtmis\jdo\TCzy.hbm.xml"/-->
四、把数据库的表映射为类
下载hibernate-extensions压缩包.修改setenv.bat文件中的环境变量.主要修改Hibernate的目录和数据库驱动程序文件名.
例如:
@echooff
rem-------------------------------------------------------------------
remSetupenvironmentforhibernatetools
rem-------------------------------------------------------------------
setJDBC_DRIVER=..\..\..\lib\ojdbc14.jar
setHIBERNATE_HOME=..\..\..\hibernate-2.0.3
setCORELIB=%HIBERNATE_HOME%\lib
setLIB=..\lib
setPROPS=%HIBERNATE_HOME%\src
setCP=%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]
DRIVERCLASS:
oracle.jdbc.driver.OracleDriver (org.gjt.mm.mysql.Driver)
CONNECTIONURL:
jdbc:
oracle:
thin:
@192.168.3.200:
1521:
demo (jdbc:
mysql:
//localhost/authority)
USER:
demo
PASSWORD:
demo
[MAPPING]
KEYFIELD:
id
SCHEMAEXPORT:
uuid.hex
[CODE]
PACKAGENAME:
pany.demo.jdo
[OUTPUT]
F:
\j_work\working\demo\src
其它的用默认值,点[TABLES]的tables..选择表,程序生成类和xml
生成的文件如下:
(1)image.java
packagepany.demo.jdo;
importjava.io.Serializable;
importjava.util.Date;
importmons.lang.builder.EqualsBuilder;
importmons.lang.builder.HashCodeBuilder;
importmons.lang.builder.ToStringBuilder;
/**@authorHibernateCodeGenerator*/
publicclassImageimplementsSerializable{
/**identifierfield*/
privateStringid;
/**nullablepersistentfield*/
privateStringtitle;
/**nullablepersistentfield*/
privateStringmessage;
/**nullablepersistentfield*/
privateStringoriginalImagePath;
/**nullablepersistentfield*/
privateStringsmallImagePath;
/**nullablepersistentfield*/
privatelongimageId;
/**nullablepersistentfield*/
privateDatesystemDate;
/**fullconstructor*/
publicImage(Stringtitle,Stringmessage,StringoriginalImagePath,StringsmallImagePath,longimageId,DatesystemDate){
this.title=title;
this.message=message;
this.originalImagePath=originalImagePath;
this.smallImagePath=smallImagePath;
this.imageId=imageId;
this.systemDate=systemDate;
}
/**defaultconstructor*/
publicImage(){
}
publicStringgetId(){
returnthis.id;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetTitle(){
returnthis.title;
}
publicvoidsetTitle(Stringtitle){
this.title=title;
}
publicStringgetMessage(){
returnthis.message;
}
publicvoidsetMessage(Stringmessage){
this.message=message;
}
publicStringgetOriginalImagePath(){
returnthis.originalImagePath;
}
publicvoidsetOriginalImagePath(StringoriginalImagePath){
this.originalImagePath=originalImagePath;
}
publicStringgetSmallImagePath(){
returnthis.smallImagePath;
}
publicvoidsetSmallImagePath(StringsmallImagePath){
this.smallImagePath=smallImagePath;
}
publiclonggetImageId(){
returnthis.imageId;
}
publicvoidsetImageId(longimageId){
this.imageId=imageId;
}
publicDategetSystemDate(){
returnthis.systemDate;
}
publicvoidsetSystemDate(DatesystemDate){
this.systemDate=systemDate;
}
publicStringtoString(){
returnnewToStringBuilder(this)
.append("id",getId())
.toString();
}
publicbooleanequals(Objectother){
if(!
(otherinstanceofImage))returnfalse;
ImagecastOther=(Image)other;
returnnewEqualsBuilder()
.append(this.getId(),castOther.getId())
.isEquals();
}
publicinthashCode(){
returnnewHashCodeBuilder()
.append(getId())
.toHashCode();
}
}
(2)Image.hbm.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD2.0//EN""
其它生成的文件略!
五、模板中的包定义
pany.demo.dataModule 数据模型
pany.demo.dao DAO模型
pany.demo.exception 异常
pany.demo.jdo hibernate类映射
pany.demo.start 启动JSP服务时加载的类
pany.demo.tags 自定义标签类
pany.demo.thread 线程类
pany.demo.util 工具类
pany.demo.web Struts类
pany.demo.facade Facade调用的类
六、设计模式:
单例
1.数据模型
接口(Datamodule.java)
packagepany.demo.datamodule;
packagepany.demo.datamodule;
importnet.sf.hibernate.Session;
importnet.sf.hibernate.Transaction;
importnet.sf.hibernate.HibernateException;
importnet.sf.hibernate.SessionFactory;
importnet.sf.hibernate.cfg.Configuration;
/**
*
Title:
Struts+Hibernate开发模板