⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struts+hibernate模板开发笔记.txt

📁 Hibernate使用说明书
💻 TXT
📖 第 1 页 / 共 3 页
字号:
作者:快刀浪子(段洪杰)

一、建立数据库联结池

二、建立测试数据库

三、建立Hibernate配置

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

五、模板中的包定义

六、设计模式:单例

七、设计模式:门面

八、设计模式:DAO

九、设计模式:MVC

十、自定义标签

十一、解决汉字编码问题
 

 
-----------------------------------------------------

一、建立数据库联结池
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>

--

文档 > 段洪杰 > 二、建立测试数据库  
 

--------------------------------------------------------------------------------
   rw-rw-r--   robbin   wheel 
 
 
二、建立测试数据库
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

 


--------------------------------------------------------------------------------
 
三、建立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'?> 

<!DOCTYPE hibernate-configuration 

PUBLIC "-//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> 

<!-- Mapping files --> 

<!--mapping resource="com\kmtava\qtmis\jdo\TCzy.hbm.xml"/--> 

</session-factory> 

</hibernate-configuration>


四、把数据库的表映射为类
下载 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>

其它生成的文件略!


五、模板中的包定义

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

六、设计模式:单例
1.数据模型

接口(Datamodule.java)

package com.company.demo.datamodule; 
package com.company.demo.datamodule;

import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.HibernateException;

import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public interface DataModule {
public SessionFactory getSessionFactory();
}

数据模型 (DatamoduleImpl.java)

package com.company.demo.datamodule;

/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.HibernateException;

import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

/**
* 建立 SessionFactory
*/

public class DataModuleImpl implements DataModule {

private SessionFactory sessionFactory;

public DataModuleImpl() throws HibernateException {
sessionFactory=new Configuration().configure().buildSessionFactory();
}
/**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -