欧美亚洲精品一区二区,亚洲精品tv久久久久,国产成人精品久久亚洲http://www.tkk7.com/heweiya/category/6065.html直覺我的J2EE應用生涯,打造我心中的一把利劍。zh-cnWed, 20 Jun 2007 05:31:39 GMTWed, 20 Jun 2007 05:31:39 GMT60找到一個好用的UML建模工具-argoumlhttp://www.tkk7.com/heweiya/archive/2007/06/20/125328.html@家軍@家軍Wed, 20 Jun 2007 05:29:00 GMThttp://www.tkk7.com/heweiya/archive/2007/06/20/125328.htmlhttp://www.tkk7.com/heweiya/comments/125328.htmlhttp://www.tkk7.com/heweiya/archive/2007/06/20/125328.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/125328.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/125328.html      argouml下載地址
     我一眼就看上他的原因是:生成的用例和包圖可能直接生成JAVA代碼,而且準備無誤,這正是我要找的。
     我想:以后使用一些框架的話,可能由PD生成一些實體,然后Hibernate生成pojo等,加入到argouml,然后根據一個框架的特性生成一些包 和類.就等于詳細設計了吧.應該來說是比詳細設計還實用的東西.總比哪些WORD文檔好吧.還有讓人看不懂的概要設計.
    我想從技術出發,這個是一條比較適用的路子.下班了.我明天將會匯報一下我使用的情況和一些范例.
    反過來又想像.這好象是一個組合的腳手架.好象ROR的零星操作步驟.應該學習.ROR畢竟是一個新生事物,JAVAEYE的推廣也需要一個時間.如果像我這樣的打工,混口飯吃的人還是專心的研究J2EE好一點.否則明天就沒有飯吃了.

    呵呵.我的文章可被JAVAEYE收回到水貼里了,可能自己的能力不如人吧,好好學習,天天向上,如果看客有什么好的工具和軟件生產思路,可以共同交流。


@家軍 2007-06-20 13:29 發表評論
]]>
三個JAVA文件完成你的MVC應用http://www.tkk7.com/heweiya/archive/2006/09/29/72760.html@家軍@家軍Fri, 29 Sep 2006 03:43:00 GMThttp://www.tkk7.com/heweiya/archive/2006/09/29/72760.htmlhttp://www.tkk7.com/heweiya/comments/72760.htmlhttp://www.tkk7.com/heweiya/archive/2006/09/29/72760.html#Feedback3http://www.tkk7.com/heweiya/comments/commentRss/72760.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/72760.html/**======================================...  閱讀全文

@家軍 2006-09-29 11:43 發表評論
]]>
用二維數組管理好你零亂的狀態、分類和其它常用選項http://www.tkk7.com/heweiya/archive/2006/09/05/67785.html@家軍@家軍Tue, 05 Sep 2006 05:31:00 GMThttp://www.tkk7.com/heweiya/archive/2006/09/05/67785.htmlhttp://www.tkk7.com/heweiya/comments/67785.htmlhttp://www.tkk7.com/heweiya/archive/2006/09/05/67785.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/67785.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/67785.html 本次主要是把一些靜態的分類、狀態或者其它常用選項使用二維數組管理起來。如果你是一個使用JSTL或者STRUTS做前臺表現的話,你就更應該好好關注了.......  閱讀全文

@家軍 2006-09-05 13:31 發表評論
]]>
struts表單 vs JSTL表現之多條件查詢示例http://www.tkk7.com/heweiya/archive/2006/07/21/59383.html@家軍@家軍Fri, 21 Jul 2006 03:20:00 GMThttp://www.tkk7.com/heweiya/archive/2006/07/21/59383.htmlhttp://www.tkk7.com/heweiya/comments/59383.htmlhttp://www.tkk7.com/heweiya/archive/2006/07/21/59383.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/59383.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/59383.html??? 如果你是高手,你就知道這個標題有誤,是的,struts表單與JSTL表現沒有可比性,但是如果我們要在實現一個多條件的查詢頁面時,這個比較就比較有效了。
??? 我不妨比較一下利用struts表單的查詢實現 和 利用JSTL做為表現而實現的查詢功能有什么不同,讓讀者尋其方便。
??? 示例說明:
??? 用戶表-USER
??? username? 用戶名稱
??? loginid?? 登錄ID
??? sex?????? 性別
??? 一、利用struts表單的查詢實現
??????? 實現步驟:
??????? 創建多條件的序列化對象(java)->在struts.config當中申明actionform->Action當中實現->輸出結果
???????
????/**?The?value?of?the?simple?userName?property.?*/
????
private?java.lang.String?userName;
????
/**?The?value?of?the?simple?loginId?property.?*/
????
private?java.lang.String?loginId;
????
/**?The?value?of?the?simple?sex?property.?*/
????
private?java.lang.String?sex;
????
/**
?????*?Return?the?value?of?the?USER_NAME?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getUserName()
????{
????????
return?this.userName;
????}

????
/**
?????*?Set?the?value?of?the?USER_NAME?column.
?????*?
@param?userName
?????
*/
????
public?void?setUserName(java.lang.String?userName)
????{
????????
this.userName?=?userName;
????
/**
?????*?Return?the?value?of?the?LOGIN_ID?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getLoginId()
????{
????????
return?this.loginId;
????}

????
/**
?????*?Set?the?value?of?the?LOGIN_ID?column.
?????*?
@param?loginId
?????
*/
????
public?void?setLoginId(java.lang.String?loginId)
????{
????????
this.loginId?=?loginId;
????}
????
/**
?????*?Return?the?value?of?the?sex?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getSex()
????{
????????
return?this.sex;
????}

????
/**
?????*?Set?the?value?of?the?sex?column.
?????*?
@param?loginId
?????
*/
????
public?void?setSex(java.lang.String?sex)
????{
????????
this.sex?=?sex;
????}
<!-- struts_fonfig -->
???????
<form-bean?name="UserActionForm"?type="org.apache.struts.validator.DynaValidatorForm">
<form-property?name="userCondition"?type="com.antbee.searchCondition.UserFindCondition"?/>????????
????????
</form-bean>
Action當中
DynaValidatorForm?UserForm?=?(DynaValidatorForm)?form;
????????UserFindCondition?Condition?
=?(UserFindCondition)?UserActionForm
????????????????.get(
"userCondition");//?取得查詢條件
List?user?=?userManager.find(Condition,
????????????????(iCurPageNo?
-?1)?*?pageCon.PAGE_SIZE,?pageCon.PAGE_SIZE);//呵呵,加入了hibernate的分頁
具體實現:
????public?List?find(UserFindCondition?Condition,?int?begin,
????????????
int?count)?{
????????StringBuffer?sql?
=?new?StringBuffer("from?User?as?a?where?1=1");??????????????
? ? ? ?
if?(Condition?!=?null)?{
????????????makeSql(sql,?shipmentFindCondition);
????????}
????????String?fsql?
=?sql.toString();
????????Query?query?
=?this.getSession().createQuery(fsql);
????????
if?(Condition?!=?null)?{
????????????setParameter(query,?Condition);
????????}
????????query.setFirstResult(begin);
????????query.setMaxResults(count);
????????List?tt?
=?query.list();
????????
return?tt;
????}

--
??? /**
??? ?* 根據條件生成一個sql語句
??? ?*
??? ?* @author 和
??? ?* @param sql
??? ?*??????????? 初始的sql語句(一般為select a from A as a where 1=1)
??? ?* @param condition
??? ?*??????????? 查詢的條件
??? ?* @return
??? ?* @version 1.0
??? ?*/
private
?void?makeSql(StringBuffer?sql, UserFindCondition?condition)?{
????????
if?(condition.getUsername()?!=?null
????????????????
&&?!condition.getUsername().toString().equals(""))?{
????????????sql
????????????????????.append(
"?and a.username like?:username");
????????}

????????
if?(condition.getLoginid()?!=?null
????????????????
&&?!condition.getLoginid(().equals(""))?{
????????????sql
????????????????????.append(
"?and a.loginid( =?:loginid(");
????????}

????????
if?(condition.getSex()?!=?null
????????????????
&&?!condition.getSex().equals(""))?{
????????????sql.append(
"?and a.sex =?:sex");
????????}


????}

????
/**
?????*?根據條件設置query的值
?????*?
?????*?
@author?和
?????*?
@param?query
?????*????????????一個hibernate的Query對象
?????*?
@param?condition
?????*????????????查詢的條件
?????*?
@return
?????*?
@version?1.0
?????
*/
????
private?void?setParameter(Query?query, UserFindCondition?condition)?{

????????
if?(condition.getUsername()?!=?null
????????????????
&&?!condition.getUsername().equals(""))?{
????????????query.setString(
"username",?"%"?+?condition.getUsername()
????????????????????
+?"%");
????????}

????????
if?(condition.getLoginid()?!=?null
????????????????
&&?!condition.getLoginid().equals(""))?{
????????????query.setString(
"loginid",?condition.getLoginid());
????????}

????????
if?(condition.getSex()?!=?null
????????????????
&&?!condition.getSex().equals(""))?{
????????????query.setString(
"sex",?condition.getSex());
????????}?????

????}

呵呵,笑死人了,這個方法很通用,我才在我的第二個項目當中才用到,真是可惜,當然了,使用Actionform有一個毛病就是對date類型要轉換成STRING類型來處理,這是actionform的一個死穴。還有對Actionform不能夠重置,只能夠回來從前。不知道這群設計者怎么想的,真是由于這一點,所以我們有必要使用最原始的方法來解決問題了。使用頁面當中的input,我們來拼request如何?
?? 二、利用JSTL做為表現而實現的查詢功能
???? 步驟:在JSP頁面布置很多的input,當然,你可以加入value了。(省略了...)
?????????? 創建查詢條件的序列化對象(同樣user.java)
?????????? 在action當中拼個condition了,做為查詢條件,后面的處理類同第一種方式。
?????UserSearchCondition?userSearchCondition?=?null;
?????userSearchCondition?
=?makeUserSearchCondition(request);

private UserSearchCondition?makeUserSearchCondition(HttpServletRequest?request)?throws?Exception{
???????
UserSearchCondition userSearchCondition?=?new?OrderSearchCondition();
????????String username
=?request.getParameter("Username");
????????String loginid
=?request.getParameter("Loginid");
????????String sex
=?request.getParameter("Sex");??
???????

????????????????
????????
if(username!=?null?&&?!username.trim().equals("")){
???????????
usernameSearchCondition.setUsername(username);
????????}
????????
????????
if(loginid? !=?null?&&?!loginid.trim().equals("")){
??????????? userSearchCondition.set
Loginid (loginid );
????????}
????????
????????
if(sex !=?null?&&?!sex.trim().equals("")){????????
??????????? userSearchCondition.setSex(
sex);
????????}??????

????????
????????
return userSearchCondition;
????}

???? 以后的方法,我就不用再做舉例了吧,可以參考如上第一種方法的實現.
???? 第二種方法的好處就是:在頁面上比較好控制,比如重置,又比如日期性數據等。
???? (所有過程當中的代碼沒有經過測試,只是說明這種方法而已)


@家軍 2006-07-21 11:20 發表評論
]]>
hibernate的延遲加載通用方法http://www.tkk7.com/heweiya/archive/2006/07/21/59366.html@家軍@家軍Fri, 21 Jul 2006 02:09:00 GMThttp://www.tkk7.com/heweiya/archive/2006/07/21/59366.htmlhttp://www.tkk7.com/heweiya/comments/59366.htmlhttp://www.tkk7.com/heweiya/archive/2006/07/21/59366.html#Feedback1http://www.tkk7.com/heweiya/comments/commentRss/59366.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/59366.html呵呵,在忙一個項目,潛水很久,現在冒個泡:
(本文適用在struts+spring+hibernate3上做開發的蟲蟲們)
類名:HibernateUtil

package?com.antbee.j2eemodel.util;

import?java.lang.reflect.InvocationTargetException;
import?java.lang.reflect.Method;
import?java.util.Collection;
import?java.util.Iterator;

import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public?class?HibernateUtil?extends?HibernateDaoSupport?{

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@param?methodName?方法名稱
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object,?String?methodName)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

String[]?methodArray?
=?methodName.split("\\.");
Method?method?
=?null;
Object?initializeObject?
=?object;

if(methodArray.length?==?1){
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
method?
=?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
this.getHibernateTemplate().initialize(initializeObject);
}
else{
for(int?i=0;i<methodArray.length;i++){
method?
=?initializeObject.getClass().getMethod(methodArray[i],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
}
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(initializeObject);
}
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@param?methodName?方法名稱數組
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object,?String?methodName[])
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for?(int?i?=?0;?i?<?methodName.length;?i++)?{
String[]?methodArray?
=?methodName[i].split("\\.");
Method?method?
=?null;
Object?initializeObject?
=?object;

if(methodArray.length?==?1){
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
method?
=?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
this.getHibernateTemplate().initialize(initializeObject);
}
else{
for(int?j=0;j<methodArray.length;j++){
method?
=?initializeObject.getClass().getMethod(methodArray[j],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
}
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(initializeObject);
}
}

}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{
this.getHibernateTemplate().lock(object,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(object);
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?collection?POJO對象集合
*?
@param?methodName?方法名稱數組
*?
@return
*?
@version?1.0
*/
public?void?initialize(Collection?collection,?String?methodName[])
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for(Iterator?i=collection.iterator();i.hasNext()Wink{
Object?object?
=?i.next();
this.initialize(object,methodName);
}
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?collection?POJO對象集合
*?
@param?methodName?方法名稱
*?
@return
*?
@version?1.0
*/
public?void?initialize(Collection?collection,?String?methodName)
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for(Iterator?i=collection.iterator();i.hasNext()Wink{
Object?object?
=?i.next();
this.initialize(object,methodName);
}
}
}?

這個方法的好外是:可以不在hbm.xml的文件當中,指定為lazy=true這個模式,可以直接使用。使用方法如下:
如果你使用SPRING,則需要把hibernateUtil注入其中:
?<bean?id="hibernateUtilTarget"?class="com.antbee.j2eemodel.util.HibernateUtil">
<property?name="sessionFactory">
<ref?local="mssqlSessionFactory"?/>
</property>
</bean>

<bean?id="hibernateUtil"?parent="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property?name="target">
<ref?local="hibernateUtilTarget"?/>
</property>
</bean>
<!--配置基礎事務-->
<bean?id="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"?abstract="true">
<property?name="transactionManager">
<ref?bean="mssqltransactionManager"?/>
</property>
<property?name="proxyTargetClass">
<value>true</value>
</property>
<property?name="transactionAttributes">
<props>
<prop?key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>?

使用示例:
如果你使用STRUTS,則需要這樣:
List?what_ur_view?=?XXXManager.find(.);//取得你要展示的對象
//如果這個對象當中有延遲加載的對象(SET)時,則需要如下加載就行
this.hibernateUtil.initialize(what_ur_view,?"getTbShipmentSale");
//其中getTbShipmentSale是其對象(SET也可以操作)?

在頁面顯示的時候,你就可以使用JSTL如下表述:
<c:out?value="${what_ur_view.tbShipmentSale.goodsReceivePersonPhone}"?/>//呵呵,是不是很爽呀。?

同樣的方法,我們也可以對一個SET在頁面進行顯示,方法如下:
<c:forEach?items="${what_ur_view.tbShipmentProductMappingSet}"?var="ProductMapping"?varStatus="status">
<c:out?value="${ProductMapping.productNum}"?/>
<c:out?value="${ProductMapping.tbOutOfWarehouse.outOfWarehouseNum}"?/>
</c:forEach>
//呵呵,支持多級嵌套,?

在ACTION當中則需要加入
hibernateUtil.initialize(what_ur_view.getTbShipmentProductMappingSet(),
new?String[]?{?"getTbProduct",?"getTbOutOfWarehouse",
"getTbProductConfigure"?});?
呵,如果你要是在HIBERNATE當中使用,這個就太簡單了吧。

怎么樣?呵呵呵,
從此,我對STRUTS的標簽深惡痛絕,而對JSTL情有獨鐘了。

@家軍 2006-07-21 10:09 發表評論
]]>
TOMCAT內存溢出之解決方法http://www.tkk7.com/heweiya/archive/2006/03/10/34659.html@家軍@家軍Fri, 10 Mar 2006 06:15:00 GMThttp://www.tkk7.com/heweiya/archive/2006/03/10/34659.htmlhttp://www.tkk7.com/heweiya/comments/34659.htmlhttp://www.tkk7.com/heweiya/archive/2006/03/10/34659.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/34659.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/34659.html問題表現:

當用戶執行一個大數據的應用時(凈字節碼量約為5M)時,系統會提示出錯:

前臺錯誤為:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception

(以下省略)

………………………………………………………

………………………………………………………

后臺錯誤為:java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start(Native Method)
        at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
va:847)

(以下省略)

………………………………………………………

………………………………………………………

問題分析:

   由于TOMCAT內存溢出而引發的問題,主要原因是JVM的虛擬內存默認為128M,當超過這個值時就把先前占用的內存釋放,而導致好象TCP/IP丟包的假象,出現HTTP500的錯誤。  
     
解決方法主要是加大TOMCAT可利用內存,并在程序當中加大內存使用。

解決方法:

方法:加大TOMCAT可利用內存:
  在TOMCAT的目錄下,也就是在TOMCAT41/bin/catalina.bat文件最前面加入
  set JAVA_OPTS=-Xms800m -Xmx800m
  表現效果是當你啟動TOMCAT時,系統內存會增加近800M使用

操作方法:
  1)、先關掉WINDOWS服務當中的TOMCAT4服務。
  2)、再找到TOMCAT/BIN目錄下startup.bat,雙擊打開它,你會發現現WINDOWS內存占用會增加近800M
  3)、執行程序,因為是TOMCAT重新編譯程序,所以第一次會比較慢。

結論:

經過測試,我們得出如下數據:

系統傳輸約2000條數據時,大約近12M的凈數據(不壓縮時),系統輔助運行的內存大約占用150M左右的空間,也就是近200M的內存占用,而我們擴大了近800MJAVA內存使用,這對于業務本身來說是足夠了。所以你們不用擔心大數據量的傳遞問題。

基于JAVA虛擬機的原理,JAVA自動有垃圾回收機制,也就是在你對一些內存長時間不使用時(近2分鐘,取決于使用頻度和優先級等),就會自動垃圾回收,從而釋放不用的內存占用。



@家軍 2006-03-10 14:15 發表評論
]]>
MYSQL BUG #5020及解決方法http://www.tkk7.com/heweiya/archive/2006/01/18/28483.html@家軍@家軍Wed, 18 Jan 2006 06:48:00 GMThttp://www.tkk7.com/heweiya/archive/2006/01/18/28483.htmlhttp://www.tkk7.com/heweiya/comments/28483.htmlhttp://www.tkk7.com/heweiya/archive/2006/01/18/28483.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/28483.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/28483.html 描述:
   MYSQL網站BUG公示
錯誤MESSAGE:
    
Connection was closed due to the following exception:

** BEGIN NESTED EXCEPTION ** 

java.sql.SQLException
MESSAGE: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Software caused connection abort: recv failed

STACKTRACE:

java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.
read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
    at java.io.BufferedInputStream.
read(BufferedInputStream.java:277)
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:
1385)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:
1532)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:
1923)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:
1163)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:
1272)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:
2236)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
1555)
    at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:
89)
    at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:
880)
    at net.sf.hibernate.loader.Loader.doQuery(Loader.java:
273)
    at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:
138)
    at net.sf.hibernate.loader.Loader.doList(Loader.java:
1063)
    at net.sf.hibernate.loader.Loader.list(Loader.java:
1054)
    at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:
854)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1554)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1531)
    at net.sf.hibernate.impl.SessionImpl.
delete(SessionImpl.java:1678)
    at net.sf.hibernate.impl.SessionImpl.
delete(SessionImpl.java:1664)
出錯原因:
   我們的系統一天24小時運行,但在夜晚的時候是沒有人連接的,因此Socket連接就超時了。早上嘗試做任何事情(比如:登錄)都將以失敗告終,除非我們關閉連接或者重新建立連接。3.0.11后才會發生這種情況。
   現在我們使用的MYSQL版本號為4.016,問題一樣。
專家建議:
   [Mark Matthews],翻譯如下:
   注意:我不贊成Autoreconnect功能,在以后的發行版本中,它最終會被移除。在這種特殊情況下, 它不起作用的原因是:在3.0.11以后,autoreconnect的方法變得更加安全了并且和阿utoCommit狀態有關聯,這樣的話就能使當前‘in-flight’事務失敗(如果你在失敗后,再次試圖連接事務,就會重新被連接)。請查看相關解釋文檔,文檔的修復故障中包括如何正確實用這個屬性。無論在哪種情況下,   如果TCP/IP在沒有連接的情況下并且還不會冒著數據庫被癱瘓的危險,是沒有百分之百的方式使得JDBC驅動器被自動重連接的,這也是為何要移除Autoreconnect功能的原因。不管網絡發生什么情況,    JDBC 都不會說明這個連接是否處于連接狀態。JDBC driver 客戶端負責處理網絡故障,只有應用程序本身(實際上是應用程序的開發者)知道如何正確應對事務失敗的情況。在服務器上過期的‘Waittimeout’基本上是服務器給與的強制性網絡故障。你通過把‘Waittimeout’設置的高點兒就可以改正它,盡管如此,作為一個開發者,你的代碼應該包含相關的異常處理并采取適當的恢復措施,不要都把它們傳到調用堆中。
   連接錯誤總是有一個SQL狀態‘08’。如果你發現它的話,你可以再連接一次并重試事務(如果是適當的話)
   不管什么原因,如果這樣不起作用的話,配置你的連接池來測試是否處于連接狀態并且那些長時間閑置連接(所有的連接池都能這樣做,但是它們的配置取決于池子)。
作者說明:在MYSQL4.1以后的版本當中,沒有“wait_timeout”變量,由
interactiveClient代替
參考資料:http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html
     [
Kirk Wylie]:翻譯如下:
   
如果有一個事務在運行的話,就能得到一個特別簡單的例子:
    
---如果連接在autoCommit模式下,autoReconnect是安全的。
    
---如果連接不在autoCommit模式下,但是沒有打開的事務,autoReconnect是安全的。(因為連接可能在池在里面)
    ---如果連接不在autoCommit模式下,有打開的事務,這樣就會拋出異常。
   
這樣會解決你不在autoRecom\nnect模式下的憂慮并且會保留應用程序的功能性。
   盡管如此,在它改變的時候,在改變日志中沒有任何記錄說明發生了改變,這點令我很煩。由于這種改變很可能破壞我的應用程序,這種變化因該添加到CHANGE文件中。

  如下是我個人的做法:
  (STRUTS+SPRING+HIBERNATE)
  1、把mysql的變量
interactiveClient由 默認的28800(8個小時)延長。并告知用戶多長時間后,重新啟動TOMCAT服務器。不過,MYSQL5.0.12版本以前的所有版本,只要你設置成 了默認語言為GBK,所有對interactive_timeout(wait_timeout)的時候如何設置,重新連接或者重新啟動MYSQL后,都 是28800,現在我使用的5.0.18后,使用GBK,沒有問題。
  2、在HIBERNATE當中加入:
   
..
<property name="hibernate.connection.url">jdbc:mysql://192.168.100.111/eai?autoReconnect=true</property>
<property name="enableDeprecatedAutoreconnect">true</property>
<!--  如下的語句是使用第三方的DBCP來建立連接池 -->
<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<!--  看到了沒有,這個maxWait一定要大于MYSQL默認的28800(秒) -->
<property name="dbcp.maxWait">30000</property>
<property name="dbcp.maxIdle">10</property>

<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">30000</property>
<property name="dbcp.ps.maxIdle">10</property>
..
    
 如上兩種方法均可,推薦大家使用第二種方法,來遮擋一下MYSQL的BUG。
如果有不對之處,請大家提出自己的見解。



@家軍 2006-01-18 14:48 發表評論
]]>
史上最簡單的struts+spring+hibernate配置實例[修訂版]http://www.tkk7.com/heweiya/archive/2005/12/19/24595.html@家軍@家軍Mon, 19 Dec 2005 03:27:00 GMThttp://www.tkk7.com/heweiya/archive/2005/12/19/24595.htmlhttp://www.tkk7.com/heweiya/comments/24595.htmlhttp://www.tkk7.com/heweiya/archive/2005/12/19/24595.html#Feedback1http://www.tkk7.com/heweiya/comments/commentRss/24595.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/24595.html本文不關心必須的JAR包,這個東東在網上能夠找到很多,本文只關心如何配置,才能夠讓STRUTS SPRING HIBERNATE和MYSQL相關連。
開發環境:wsad5.1
Spring-Version: 1.1.4
Struts Framework 1.1
Hibernate-Version: 2.1.7

<web.xml>
---------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
<display-name>MVC_BPEL_MODELWeb</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Hibernate_Context.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>
-----------------------------------
<action-servlet.xml>
----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean name="/User" class="com.yaya.action.UserAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>


</beans>
-------------------------------------------------------------------
<hibernate_context.xml>
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean> -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>

<property name="url">
<value>jdbc:mysql://localhost/pdm</value>
</property>

<property name="username">
<value>root</value>
</property>

<property name="password">
<value></value>
</property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

<property name="dataSource">
<ref local="dataSource" />
</property>

<property name="mappingResources">
<list>
<value>hbm_tb/TSysuser.hbm.xml</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">

<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>


<!-- Spring的數據訪問異常轉換器(Data Access Exception Translator)定義 -->
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>

<bean id="userDao" class="com.yaya.service.dao.hibernate.UserHibernateDao">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<bean id="userManagerTarget" class="com.yaya.service.spring.UserManagerImpl">
<property name="userDao">
<ref local="userDao" />
</property>
</bean>


<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>

<property name="target">
<ref local="userManagerTarget" />
</property>

<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>


</beans>-------------------------------------------------------------------
<struts-config.xml>
-------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- 數據源 -->
<data-sources></data-sources>

<!-- 表單 Bean -->
<form-beans>
<form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="user" type="com.yaya.hb.TSysuser" />
</form-bean>
</form-beans>

<!-- 全局異常 -->
<global-exceptions></global-exceptions>

<!-- 全局轉發 -->
<global-forwards></global-forwards>

<!-- 操作映射 -->
<action-mappings>
<action path="/User" type="org.springframework.web.struts.DelegatingActionProxy"
name="UserActionForm" scope="request" parameter="method" validate="false">
<forward name="list" path="/userlist.jsp" />
<forward name="edit" path="/userform.jsp" />
</action>

</action-mappings>

<!-- 消息資源 -->
<message-resources parameter="mvc_bpel_modelweb.resources.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>

</struts-config>
------------------------------------------------------------------
UserHibernateDao.java
------------------------------------------------------------------
/*
* 創建日期 2005-4-7
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao.hibernate;

import java.util.List;

import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import net.sf.hibernate.HibernateException;

import com.yaya.hb.TSysuser;
import com.yaya.service.dao.IUserDao;
import java.util.List;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserHibernateDao extends HibernateDaoSupport implements IUserDao {

private Log log = LogFactory.getLog(UserHibernateDao.class);

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#getUsers()

*/

public List getUsers() {

return getHibernateTemplate().find("from TSysuser");

}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)

*/

public TSysuser getUser(String username) {

// TODO 自動生成方法存根
if (this.getHibernateTemplate() == null)
{
System.out.println("error at there");
return null;

}
TSysuser user = (TSysuser) getHibernateTemplate().get(TSysuser.class,username);
//TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser users where users.username = 'admin'",username);
if (user == null) {
throw new ObjectRetrievalFailureException(TSysuser.class, username);
}
return user;


//String msg = getHibernateTemplate().get(TSysuser.class,username).toString();

//TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser where username = ?",username);
//System.out.println(user.getUserdesc());
//System.out.println(user.getHeadship());

//return user;
}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)

*/

public void saveUser(TSysuser user) {

log.debug("xxxxxxx");

System.out.println("yyyy");

getHibernateTemplate().saveOrUpdate(user);

if (log.isDebugEnabled()) {

log.debug("username set to " + user.getUsername());

}

}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)

*/

public void removeUser(String username) {

Object user = getHibernateTemplate().load(TSysuser.class, username);

getHibernateTemplate().delete(user);

if (log.isDebugEnabled()) {

log.debug("del user " + username);

}

}

}
-------------------------------------------------------------------
useraction.java
--------------------------------------------------------------------
/*
* 創建日期 2005-4-11
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.action;

import java.util.Date;

import org.apache.struts.actions.DispatchAction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.util.MessageResources;

import com.opensymphony.user.User;
import com.yaya.axis.SpringBeanProvider;
import com.yaya.hb.TSysuser;
import com.yaya.service.spring.UserManagerImpl;
/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserAction extends DispatchAction {

private static Log log = LogFactory.getLog(UserAction.class);
private UserManagerImpl mgr = null;
public void setUserManager(UserManagerImpl userManager) {
this.mgr = userManager;
}

public ActionForward delete(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'delete' method...");
}
mgr.removeUser(request.getParameter("user.username"));
ActionMessages messages = new ActionMessages();
messages.add(
ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.deleted"));
saveMessages(request, messages);
return list(mapping, form, request, response);
}

public ActionForward edit(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'edit' method...");
}

DynaActionForm UserActionForm = (DynaActionForm) form;
String username = request.getParameter("username");

// null userId indicates an add
if (username != null) {
try
{
TSysuser user = mgr.getUser(username);
if (user == null) {
ActionMessages errors = new ActionMessages();
errors.add(
ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.missing"));
saveErrors(request, (ActionErrors) errors);
return mapping.findForward("list");
}
UserActionForm.set("user",user);
//request.setAttribute("user",user);
}
catch(Exception e)
{
e.printStackTrace();
}

}
return mapping.findForward("edit");
}

public ActionForward list(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'list' method...");
}
request.setAttribute("users", mgr.getUsers());
return mapping.findForward("list");
}

public ActionForward save(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'save' method...");
}

if (isCancelled(request)) {
return list(mapping, form, request, response);
}

// run validation rules on this form
ActionMessages errors = form.validate(mapping, request);

if (!errors.isEmpty()) {
saveErrors(request, (ActionErrors) errors);

return mapping.findForward("edit");
}
DynaActionForm UserActionForm = (DynaActionForm) form;
TSysuser user = (TSysuser) UserActionForm.get("user");

mgr.saveUser(user);

ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.saved", user.getUsername()));
//saveMessages((HttpServletRequest) request.getSession(), messages);

return mapping.findForward("list");
}

public ActionForward unspecified(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
return list(mapping, form, request, response);
}

}

-------------------------------------------------------------------
UserActionForm.java
-------------------------------------------------------------------
/*
* 創建日期 2005-3-29
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.actionform;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserActionForm extends ActionForm {
/** identifier field */
private String username;

/** identifier field */
private String userdesc;

/** identifier field */
private String passwords;

/** identifier field */
private String deptno;

/** identifier field */
private String headship;

/** identifier field */
private String sex;

/** identifier field */
private String tel;

/** identifier field */
private String email;

/** identifier field */
private String url;

/** identifier field */
private String pcall;

/** identifier field */

/** identifier field */
private String userphoto;

/** identifier field */
private Integer facerefutime;

/** identifier field */
private String facelanguage;

/** identifier field */
private String lastmodif;

/** identifier field */
private Date lastmdate;

/** identifier field */
private String creadtor;

/** identifier field */
private Date creatdate;

public String getUsername() {
return this.username;
}

public void setUsername(String username) {
this.username = username;
}



public String getPasswords() {
return this.passwords;
}

public void setPasswords(String passwords) {
this.passwords = passwords;
}

public String getDeptno() {
return this.deptno;
}

public void setDeptno(String deptno) {
this.deptno = deptno;
}

public String getHeadship() {
return this.headship;
}

public void setHeadship(String headship) {
this.headship = headship;
}

public String getSex() {
return this.sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getTel() {
return this.tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public String getEmail() {
return this.email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUrl() {
return this.url;
}

public void setUrl(String url) {
this.url = url;
}

public String getPcall() {
return this.pcall;
}

public void setPcall(String pcall) {
this.pcall = pcall;
}


public String getUserphoto() {
return this.userphoto;
}

public void setUserphoto(String userphoto) {
this.userphoto = userphoto;
}

public Integer getFacerefutime() {
return this.facerefutime;
}

public void setFacerefutime(Integer facerefutime) {
this.facerefutime = facerefutime;
}

public String getFacelanguage() {
return this.facelanguage;
}

public void setFacelanguage(String facelanguage) {
this.facelanguage = facelanguage;
}

public String getLastmodif() {
return this.lastmodif;
}

public void setLastmodif(String lastmodif) {
this.lastmodif = lastmodif;
}

public Date getLastmdate() {
return this.lastmdate;
}

public void setLastmdate(Date lastmdate) {
this.lastmdate = lastmdate;
}

public String getCreadtor() {
return this.creadtor;
}

public void setCreadtor(String creadtor) {
this.creadtor = creadtor;
}

public Date getCreatdate() {
return this.creatdate;
}

public void setCreatdate(Date creatdate) {
this.creatdate = creatdate;
}

/**
* @return
*/
public String getUserdesc() {
return userdesc;
}

/**
* @param string
*/
public void setUserdesc(String string) {
userdesc = string;
}


}
------------------------------------------------------------------
TSysuser.java
------------------------------------------------------------------
package com.yaya.hb;

import java.io.InputStream;
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 TSysuser implements Serializable {

/** identifier field */
private String username;

/** identifier field */
private String userdesc;

/** identifier field */
private String passwords;

/** identifier field */
private String deptno;

/** identifier field */
private String headship;

/** identifier field */
private String sex;

/** identifier field */
private String tel;

/** identifier field */
private String email;

/** identifier field */
private String url;

/** identifier field */
private String pcall;

/** identifier field */

/** identifier field */
private String userphoto;

/** identifier field */
private Integer facerefutime;

/** identifier field */
private String facelanguage;

/** identifier field */
private String lastmodif;

/** identifier field */
private Date lastmdate;

/** identifier field */
private String creadtor;

/** identifier field */
private Date creatdate;

/** full constructor */
public TSysuser(String username, String userdesc, String passwords, String deptno, String headship, String sex, String tel, String email, String url, String pcall, InputStream userimage, String userphoto, Integer facerefutime, String facelanguage, String lastmodif, Date lastmdate, String creadtor, Date creatdate) {
this.username = username;
this.userdesc = userdesc;
this.passwords = passwords;
this.deptno = deptno;
this.headship = headship;
this.sex = sex;
this.tel = tel;
this.email = email;
this.url = url;
this.pcall = pcall;
this.userphoto = userphoto;
this.facerefutime = facerefutime;
this.facelanguage = facelanguage;
this.lastmodif = lastmodif;
this.lastmdate = lastmdate;
this.creadtor = creadtor;
this.creatdate = creatdate;
}

/** default constructor */
public TSysuser() {
}

public String getUsername() {
return this.username;
}

public void setUsername(String username) {
this.username = username;
}

public String getUserdesc() {
return this.userdesc;
}

public void setUserdesc(String userdesc) {
this.userdesc = userdesc;
}

public String getPasswords() {
return this.passwords;
}

public void setPasswords(String passwords) {
this.passwords = passwords;
}

public String getDeptno() {
return this.deptno;
}

public void setDeptno(String deptno) {
this.deptno = deptno;
}

public String getHeadship() {
return this.headship;
}

public void setHeadship(String headship) {
this.headship = headship;
}

public String getSex() {
return this.sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getTel() {
return this.tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public String getEmail() {
return this.email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUrl() {
return this.url;
}

public void setUrl(String url) {
this.url = url;
}

public String getPcall() {
return this.pcall;
}

public void setPcall(String pcall) {
this.pcall = pcall;
}


public String getUserphoto() {
return this.userphoto;
}

public void setUserphoto(String userphoto) {
this.userphoto = userphoto;
}

public Integer getFacerefutime() {
return this.facerefutime;
}

public void setFacerefutime(Integer facerefutime) {
this.facerefutime = facerefutime;
}

public String getFacelanguage() {
return this.facelanguage;
}

public void setFacelanguage(String facelanguage) {
this.facelanguage = facelanguage;
}

public String getLastmodif() {
return this.lastmodif;
}

public void setLastmodif(String lastmodif) {
this.lastmodif = lastmodif;
}

public Date getLastmdate() {
return this.lastmdate;
}

public void setLastmdate(Date lastmdate) {
this.lastmdate = lastmdate;
}

public String getCreadtor() {
return this.creadtor;
}

public void setCreadtor(String creadtor) {
this.creadtor = creadtor;
}

public Date getCreatdate() {
return this.creatdate;
}

public void setCreatdate(Date creatdate) {
this.creatdate = creatdate;
}

public String toString() {
return new ToStringBuilder(this)
.append("username", getUsername())
.append("userdesc", getUserdesc())
.append("passwords", getPasswords())
.append("deptno", getDeptno())
.append("headship", getHeadship())
.append("sex", getSex())
.append("tel", getTel())
.append("email", getEmail())
.append("url", getUrl())
.append("pcall", getPcall())
.append("userphoto", getUserphoto())
.append("facerefutime", getFacerefutime())
.append("facelanguage", getFacelanguage())
.append("lastmodif", getLastmodif())
.append("lastmdate", getLastmdate())
.append("creadtor", getCreadtor())
.append("creatdate", getCreatdate())
.toString();
}

public boolean equals(Object other) {
if ( !(other instanceof TSysuser) ) return false;
TSysuser castOther = (TSysuser) other;
return new EqualsBuilder()
.append(this.getUsername(), castOther.getUsername())
.append(this.getUserdesc(), castOther.getUserdesc())
.append(this.getPasswords(), castOther.getPasswords())
.append(this.getDeptno(), castOther.getDeptno())
.append(this.getHeadship(), castOther.getHeadship())
.append(this.getSex(), castOther.getSex())
.append(this.getTel(), castOther.getTel())
.append(this.getEmail(), castOther.getEmail())
.append(this.getUrl(), castOther.getUrl())
.append(this.getPcall(), castOther.getPcall())
.append(this.getUserphoto(), castOther.getUserphoto())
.append(this.getFacerefutime(), castOther.getFacerefutime())
.append(this.getFacelanguage(), castOther.getFacelanguage())
.append(this.getLastmodif(), castOther.getLastmodif())
.append(this.getLastmdate(), castOther.getLastmdate())
.append(this.getCreadtor(), castOther.getCreadtor())
.append(this.getCreatdate(), castOther.getCreatdate())
.isEquals();
}

public int hashCode() {
return new HashCodeBuilder()
.append(getUsername())
.append(getUserdesc())
.append(getPasswords())
.append(getDeptno())
.append(getHeadship())
.append(getSex())
.append(getTel())
.append(getEmail())
.append(getUrl())
.append(getPcall())
.append(getUserphoto())
.append(getFacerefutime())
.append(getFacelanguage())
.append(getLastmodif())
.append(getLastmdate())
.append(getCreadtor())
.append(getCreatdate())
.toHashCode();
}

}
---------------------------------------------------------------------
IUserManager.java
---------------------------------------------------------------------
package com.yaya.service;

import java.util.List;

import com.yaya.hb.TSysuser;
import com.yaya.service.dao.IUserDao;


public interface IUserManager {
public void setUserDAO(IUserDao userDao);
public TSysuser getUser(String username);
public List getUsers();
public void saveUser(TSysuser user);
public void removeUser(String username);
}
--------------------------------------------------------------------
IDAO.java
--------------------------------------------------------------------
/*
* 創建日期 2005-4-7
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao;
/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public interface IDAO {

}
--------------------------------------------------------------
IUserDao.java
--------------------------------------------------------------
/*
* 創建日期 2005-4-11
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao;

import java.util.List;

import com.yaya.hb.TSysuser;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public interface IUserDao extends IDAO {

public List getUsers();
public TSysuser getUser(String username);
public void saveUser(TSysuser user);
public void removeUser(String username);
}
----------------------------------------------------------
UserManagerImpl.java
----------------------------------------------------------
package com.yaya.service.spring;

import com.yaya.hb.TSysuser;
import com.yaya.service.IUserManager;
import com.yaya.service.dao.IUserDao;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class UserManagerImpl implements IUserManager {
private static Log log = LogFactory.getLog(UserManagerImpl.class);

public IUserDao dao;

public void setUserDao(IUserDao userDao) {
this.dao = userDao;
this.setUserDAO(userDao);
}

public TSysuser getUser(String username) {
return dao.getUser(username);
}

public List getUsers() {
return dao.getUsers();
}

public void saveUser(TSysuser user) {
dao.saveUser(user);
}

public void removeUser(String username) {
// TODO 自動生成方法存根
dao.removeUser(username);
}


public void setUserDAO(IUserDao dao) {
// TODO 自動生成方法存根
this.dao = dao;
}
}
-----------------------------------------------------------------
TSysuser.hbm.xml
-----------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class name="com.yaya.hb.TSysuser" table="t_sysuser">

<id name="username" type="java.lang.String" column="USERNAME">
<generator class="identity" />
</id>

<property name="userdesc" type="java.lang.String" column="USERDESC" length="30" />
<property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" />
<property name="deptno" type="java.lang.String" column="DEPTNO" length="30" />
<property name="headship" type="java.lang.String" column="HEADSHIP" length="30" />
<property name="sex" type="java.lang.String" column="SEX" length="4" />
<property name="tel" type="java.lang.String" column="TEL" length="18" />
<property name="email" type="java.lang.String" column="EMAIL" length="30" />
<property name="url" type="java.lang.String" column="URL" length="30" />
<property name="pcall" type="java.lang.String" column="PCALL" length="20" />
<property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" />
<property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" />
<property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" />
<property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" />
<property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" />
<property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" />
<property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" />

<!-- associations -->

</class>
</hibernate-mapping>
-------------------------------------------------------------------
創建數據庫腳本 用于MYSQL
-------------------------------------------------------------------
CREATE TABLE `t_sysuser` (
`USERNAME` varchar(30) NOT NULL default '',
`USERDESC` varchar(30) default NULL,
`PASSWORDS` varchar(30) default NULL,
`DEPTNO` varchar(30) default NULL,
`HEADSHIP` varchar(30) default NULL,
`SEX` varchar(4) default NULL,
`TEL` varchar(1Cool default NULL,
`EMAIL` varchar(30) default NULL,
`URL` varchar(30) default NULL,
`PCALL` varchar(20) default NULL,
`USERPHOTO` varchar(255) default NULL,
`FACEREFUTIME` decimal(6,0) default NULL,
`FACELANGUAGE` char(1) default NULL,
`LASTMODIF` varchar(30) default NULL,
`LASTMDATE` datetime default NULL,
`CREADTOR` varchar(30) default NULL,
`CREATDATE` datetime default NULL,
PRIMARY KEY (`USERNAME`)
) TYPE=MyISAM;
-----------------------------------------------------------
提示:COPY幾個資源文件
validation.xml 和 validator-rules.xml
前臺使用的幾個JSP文件如下:
-----------------------------------------------------------
index.jsp
-----------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class name="com.yaya.hb.TSysuser" table="t_sysuser">

<id name="username" type="java.lang.String" column="USERNAME">
<generator class="identity" />
</id>

<property name="userdesc" type="java.lang.String" column="USERDESC" length="30" />
<property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" />
<property name="deptno" type="java.lang.String" column="DEPTNO" length="30" />
<property name="headship" type="java.lang.String" column="HEADSHIP" length="30" />
<property name="sex" type="java.lang.String" column="SEX" length="4" />
<property name="tel" type="java.lang.String" column="TEL" length="18" />
<property name="email" type="java.lang.String" column="EMAIL" length="30" />
<property name="url" type="java.lang.String" column="URL" length="30" />
<property name="pcall" type="java.lang.String" column="PCALL" length="20" />
<property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" />
<property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" />
<property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" />
<property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" />
<property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" />
<property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" />
<property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" />

<!-- associations -->

</class>
</hibernate-mapping>
------------------------------------------------------------------
userlist.jsp
------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html locale="true">
<head>
<title><bean:message key="pdmweb.title"/></title>
</head>
<body>
<table class="list">
<thead>
<tr bgcolor="#8080ff">
<td bgcolor="#8080ff"><bean:message key="listuser.username" /></td>
<td bgcolor="#8080ff"><bean:message key="listuser.userdesc" /></td>
<td bgcolor="#8080ff"><bean:message key="listuser.sex" /></td>
</tr>
</thead>
<tbody>
<logic:iterate id="user" name="users">
<tr>
<td bgcolor="#ff8040"><A href="User.do?method=edit&username=<bean:write name="user" property="username"/>" ><bean:write name="user" property="username" />
</a>
</td>
<td bgcolor="#ff8040"><bean:write name="user" property="userdesc" /></td>
<td bgcolor="#ff8040"><logic:equal name="user" property="sex" value="0">
<bean:message key="listuser.sex0" />
</logic:equal> <logic:equal name="user" property="sex" value="1">
<bean:message key="listuser.sex1" />
</logic:equal></td>
</tr>
</logic:iterate>
</tbody>
</table>
</body>
</html:html>
-------------------------------------------------------------------
userform.jsp
------------------------------------------------------------------
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>userform.jsp</title>
</head>
<body>

<html:form action="User.do?method=save" method="post" focus="user.userdesc" >
<html:text property="user.username" />
<br>
<html:text property="user.userdesc" /><br>
<html:text property="user.deptno" /><br>


<html:submit property="tijiao" />
</html:form>
</body>
</html:html>
--------------------------------------------------------------
如果有什么疑問可以致電郵至 heweiya@yahoo.com.cn,互相交流,互相學習。

@家軍 2005-12-19 11:27 發表評論
]]>
配置Springframework與hibernate連接多數據庫的事務http://www.tkk7.com/heweiya/archive/2005/12/19/24594.html@家軍@家軍Mon, 19 Dec 2005 03:26:00 GMThttp://www.tkk7.com/heweiya/archive/2005/12/19/24594.htmlhttp://www.tkk7.com/heweiya/comments/24594.htmlhttp://www.tkk7.com/heweiya/archive/2005/12/19/24594.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/24594.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/24594.html本文只注重配置,分別有如下幾個文件
<出處:和巍雅的BLOG
web.xml 部署配置文件
struts-config.xml struts的配置文件
action-servlet.xml Spring依賴注入struts
Nhibernate_Context.xml Spring依賴注入struts
hibernate.cfg.xml mssql的Hibernate配置
hibernate_mysql.cfg.xml mysql的Hibernate配置 
開始:
web.xml
------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
<display-name>EAIJ2EEPRJWeb</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Nhibernate_Context.xml</param-value>
</context-param>
<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<display-name>SetCharacterEncodingFilter</display-name>
<filter-class>com.throuhout.j2eemodel.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<display-name>SpringContextServlet</display-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>
---------------------------------------------------------------------
struts_config.xml
---------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- 數據源 -->
<data-sources></data-sources>

<!-- 表單 Bean -->
<form-beans>
<form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="user" type="com.throuhout.j2eemodel.hibernate.TSysuser" />
</form-bean>
<form-bean name="UserMenuActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="menu" type="com.throuhout.j2eemodel.hibernate.TSysmufudef">
</form-property>
</form-bean>
</form-beans>

<!-- 全局異常 -->
<global-exceptions></global-exceptions>


<!-- 全局轉發 -->
<global-forwards>
<forward name="success" path="/main/success.jsp"></forward>
<forward name="failure" path="/main/fail.jsp"></forward>
</global-forwards>

<!-- 操作映射 -->
<action-mappings>
<action path="/User" type="org.springframework.web.struts.DelegatingActionProxy" name="UserActionForm" scope="request" parameter="method" validate="false">
<forward name="sucess" path="/main/project_index.htm" />
<forward name="false" path="/failure.html"></forward>
<forward name="list" path="/main/userlist.jsp">
</forward>
<forward name="edit" path="/main/userform.jsp">
</forward>
</action>
<action path="/UserMenu" type="org.springframework.web.struts.DelegatingActionProxy" name="UserMenuActionForm" scope="request" parameter="method" validate="false">
<forward name="menu" path="/main/menu.jsp"></forward>
<forward name="usermenu" path="/main/usermenu.jsp">
</forward>
</action>
</action-mappings>

<!-- 消息資源 -->
<message-resources parameter="eaij2eeprjweb.resources.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" />
</plug-in>

</struts-config>
-------------------------------------------------------------------
action-servlet.xml
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<!-- Spring依賴注入到Struts當中 -->
<beans>
<bean name="/User" class="com.throuhout.j2eemodel.struts.action.UserAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>
<bean name="/UserMenu" class="com.throuhout.j2eemodel.struts.action.UserMenuAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>

</beans>
-------------------------------------------------------------------
Nhibernate_Context.xml
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Spring依賴注入到Struts當中 -->
<!-- Hibernate SessionFactory -->
<beans>
<bean id="mssqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.SybaseDialect</prop>

<!--<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.hibernate.cache.OSCacheProvider</prop>-->
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>
</bean>

<bean id="mysqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate_mysql.cfg.xml</value>
</property>

<property name="hibernateProperties">
<props>
<!--<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.hibernate.cache.OSCacheProvider</prop>-->
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->

<bean id="mysqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mysqlSessionFactory" />
</property>
</bean>

<bean id="mssqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mssqlSessionFactory" />
</property>
</bean>

<!--
<bean id="aDao" class="com.plat.dao.user.impl.aDaoImpl">
<property name="sessionFactory">
<ref local="oracleSessionFactory" />
</property>
</bean>
-->
<bean id="userDao" class="com.throuhout.j2eemodel.spring.service.dao.hibernate.UserHibernateDao">
<property name="sessionFactory">
<ref local="mysqlSessionFactory" />
</property>
</bean>


<!-- Service -->
<bean id="userManagerTarget" class="com.throuhout.j2eemodel.spring.service.UserManagerImpl">
<property name="userDao">
<ref local="userDao" />
</property>
</bean>

<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="mysqltransactionManager" />
</property>

<property name="target">
<ref local="userManagerTarget" />
</property>

<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
---------------------------------------------------------------------
hibernate.cfg.xml
---------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.SybaseDialect</property>

<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.100.111:1433/testdb</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">yaya</property>
<!--
<property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.100.148:1433/throughoutdb</property>
<property name="hibernate.connection.username">siaote</property>
<property name="hibernate.connection.password">siaote</property>
-->
<property name="hibernate.connection.pool.size">20</property>
<property name="session_factory_name">mssqlSessionFactory</property>

<!-- Mapping files -->
<mapping resource="hbm_tb/T_COST_TYPE.hbm.xml" />


</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------
hibernate_mysql.cfg.xml
-------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost/pdm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>

<property name="hibernate.connection.pool.size">20</property>
<property name="session_factory_name">mysqlSessionFactory</property>

<!-- Mapping files -->
<mapping resource="hbm_tb/TSysuser.hbm.xml" />
<mapping resource="hbm_tb/TSysmufudef.hbm.xml" />


</session-factory>
</hibernate-configuration>

----------------------------------------------------------------
本人的開發環境:
開發工具:WSAD 5.1
中間件服務器:tomcat 4.24
數據庫:mysql\mssql 完全通過。
你可以和 heweiya@yahoo.com.cn 聯系

@家軍 2005-12-19 11:26 發表評論
]]>
DTREE如何認一個目錄節點打開一個URLhttp://www.tkk7.com/heweiya/archive/2005/12/19/24586.html@家軍@家軍Mon, 19 Dec 2005 03:17:00 GMThttp://www.tkk7.com/heweiya/archive/2005/12/19/24586.htmlhttp://www.tkk7.com/heweiya/comments/24586.htmlhttp://www.tkk7.com/heweiya/archive/2005/12/19/24586.html#Feedback0http://www.tkk7.com/heweiya/comments/commentRss/24586.htmlhttp://www.tkk7.com/heweiya/services/trackbacks/24586.html 方法及其簡單,見dtree.js的標準函數function(pNode),第107行:

java代碼: 

// Creates the tree structure
dTree.prototype.addNode = function(pNode) {
        var str 
= '';
        var n
=0;
        
if (this.config.inOrder) n = pNode._ai;
        
for (n; n<this.aNodes.length; n++) {
                
if (this.aNodes[n].pid == pNode.id) {
                        var cn 
= this.aNodes[n];
                        cn._p 
= pNode;
                        cn._ai 
= n;
                        
this.setCS(cn);
                        
if (!cn.target && this.config.target) cn.target = this.config.target;
                        
if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);
[color
=red]//注意下面的語句:[/color]
                        if (!this.config.folderLinks && cn._hc) cn.url = null;
[color
=darkred]//如果想讓一個目錄節點也能夠打開一個URL則把上面的這句話關掉。
//if (!this.config.folderLinks && cn._hc) cn.url = null;[/color]
                        if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {
                                        cn._is 
= true;
                                        
this.selectedNode = n;
                                        
this.selectedFound = true;
                        }
                        str 
+= this.node(cn, n);
                        
if (cn._ls) break;
                }
        }
        
return str;
};



@家軍 2005-12-19 11:17 發表評論
]]>
主站蜘蛛池模板: 亚洲AV无码码潮喷在线观看| 福利免费在线观看| 97se亚洲综合在线| 亚洲日本在线观看视频| 性感美女视频在线观看免费精品| 国产免费一区二区三区不卡| 18禁免费无码无遮挡不卡网站 | 在线免费视频你懂的| 亚洲精品无码av中文字幕| 青青草免费在线视频| 无码人妻一区二区三区免费n鬼沢| 牛牛在线精品观看免费正| 亚洲爆乳成av人在线视菜奈实| 亚洲国产人成在线观看| 亚洲激情在线观看| 成人免费无码大片A毛片抽搐| 日本一卡精品视频免费 | 国产l精品国产亚洲区在线观看| 国产一区二区三区免费视频| 成在人线AV无码免费| 美女网站免费福利视频| 91久久精品国产免费一区| 日韩视频在线观看免费| 手机看片国产免费永久| 国产做国产爱免费视频| 国产精品黄页免费高清在线观看| 日产久久强奸免费的看| 曰批全过程免费视频免费看| 国产精品亚洲一区二区三区| 国产亚洲视频在线播放大全| 日本亚洲高清乱码中文在线观看| 亚洲AV无码片一区二区三区| 亚洲风情亚Aⅴ在线发布| 亚洲人成人无码.www石榴| 亚洲精品国产首次亮相| 亚洲色大成网站www| 亚洲精品无码aⅴ中文字幕蜜桃| 一区二区亚洲精品精华液| 成人亚洲国产va天堂| 亚洲爆乳大丰满无码专区| 特级毛片免费观看视频|