ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色图丝袜,电影午夜精品一区二区三区,国产欧美一区二区三区在线看http://www.aygfsteel.com/konhon/category/3027.html忘掉éŽåŽ»åQŒå±•望未來。找回自我,­‘…越自我ã€? <br> <b>逃é¿ä¸ä¸€å®šèº²çš„过, é¢å¯¹ä¸ä¸€å®šæœ€éš¾è¿‡, å­¤å•ä¸ä¸€å®šä¸å¿«ä¹, 得到ä¸ä¸€å®šèƒ½é•¿ä¹…, 失去ä¸ä¸€å®šä¸å†æ‹¥æœ? å¯èƒ½å› äØ“æŸä¸ªç†ç”±è€Œä¼¤å¿ƒéš¾˜q? 但我å´èƒ½æ‰¾ä¸ªç†ç”±è®©è‡ªå·±å¿«ä¹?</b><br><p> <!-- Search Google --> <left> <form method="get" action="http://www.google.com/custom" target="google_window"> <table> <tr><td nowrap="nowrap" valign="top" align="left" height="32"> <a > <img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a> <input type="text" name="q" size="31" maxlength="255" value=""></input> <input type="submit" name="sa" value="æœçƒ¦"></input> <input type="hidden" name="client" value="pub-5408663347953425"></input> <input type="hidden" name="forid" value="1"></input> <input type="hidden" name="ie" value="UTF-8"></input> <input type="hidden" name="oe" value="UTF-8"></input> <input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1;"></input> <input type="hidden" name="hl" value="zh-CN"></input> </td></tr></table> </form> </left> <!-- Search Google --> zh-cnFri, 02 Mar 2007 06:57:09 GMTFri, 02 Mar 2007 06:57:09 GMT60应用Hibernate3çš„DetachedCriteria实现分页查询http://www.aygfsteel.com/konhon/archive/2006/04/07/39756.htmlkonhon 优åŽkonhon 优åŽFri, 07 Apr 2006 02:37:00 GMThttp://www.aygfsteel.com/konhon/archive/2006/04/07/39756.htmlhttp://www.aygfsteel.com/konhon/comments/39756.htmlhttp://www.aygfsteel.com/konhon/archive/2006/04/07/39756.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/39756.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/39756.htmlHibernate3æä¾›äº†DetachedCriteriaåQŒä‹É得我们å¯ä»¥åœ¨Web层构造detachedCriteriaåQŒç„¶åŽè°ƒç”¨ä¸šåС层BeanåQŒè¿›è¡ŒåŠ¨æ€æ¡ä»¶æŸ¥è¯¢ï¼Œæ ÒŽ®˜q™ä¸€åŠŸèƒ½åQŒæˆ‘设计了通用的抽象Bean基类和分™å늱»æ”¯æŒåQŒä»£ç æ¥è‡ªäºŽQuake Wangçš„javaeye-core包的相应¾c»ï¼Œç„¶åŽåˆåšäº†å¾ˆå¤šä¿®æ”V€?

分页支挾c»ï¼š
package com.javaeye.common.util; 

import java.util.List; 

public class PaginationSupport { 

        
public final static int PAGESIZE = 30; 

        
private int pageSize = PAGESIZE; 

        
private List items; 

        
private int totalCount; 

        
private int[] indexes = new int[0]; 

        
private int startIndex = 0; 

        
public PaginationSupport(List items, int totalCount) { 
                setPageSize(PAGESIZE); 
                setTotalCount(totalCount); 
                setItems(items);                
                setStartIndex(
0); 
        } 

        
public PaginationSupport(List items, int totalCount, int startIndex) { 
                setPageSize(PAGESIZE); 
                setTotalCount(totalCount); 
                setItems(items);                
                setStartIndex(startIndex); 
        } 

        
public PaginationSupport(List items, int totalCount, int pageSize, int startIndex) { 
                setPageSize(pageSize); 
                setTotalCount(totalCount); 
                setItems(items); 
                setStartIndex(startIndex); 
        } 

        
public List getItems() { 
                
return items; 
        } 

        
public void setItems(List items) { 
                
this.items = items; 
        } 

        
public int getPageSize() { 
                
return pageSize; 
        } 

        
public void setPageSize(int pageSize) { 
                
this.pageSize = pageSize; 
        } 

        
public int getTotalCount() { 
                
return totalCount; 
        } 

        
public void setTotalCount(int totalCount) { 
                
if (totalCount > 0) { 
                        
this.totalCount = totalCount; 
                        
int count = totalCount / pageSize; 
                        
if (totalCount % pageSize > 0) 
                                count
++; 
                        indexes 
= new int[count]; 
                        
for (int i = 0; i < count; i++) { 
                                indexes[i] 
= pageSize * i; 
                        } 
                } 
else { 
                        
this.totalCount = 0; 
                } 
        } 

        
public int[] getIndexes() { 
                
return indexes; 
        } 

        
public void setIndexes(int[] indexes) { 
                
this.indexes = indexes; 
        } 

        
public int getStartIndex() { 
                
return startIndex; 
        } 

        
public void setStartIndex(int startIndex) { 
                
if (totalCount <= 0) 
                        
this.startIndex = 0; 
                
else if (startIndex >= totalCount) 
                        
this.startIndex = indexes[indexes.length - 1]; 
                
else if (startIndex < 0) 
                        
this.startIndex = 0; 
                
else { 
                        
this.startIndex = indexes[startIndex / pageSize]; 
                } 
        } 

        
public int getNextIndex() { 
                
int nextIndex = getStartIndex() + pageSize; 
                
if (nextIndex >= totalCount) 
                        
return getStartIndex(); 
                
else 
                        
return nextIndex; 
        } 

        
public int getPreviousIndex() { 
                
int previousIndex = getStartIndex() - pageSize; 
                
if (previousIndex < 0) 
                        
return 0; 
                
else 
                        
return previousIndex; 
        } 

}

抽象业务¾c?
java代ç : 
/** 
* Created on 2005-7-12 
*/ 
package com.javaeye.common.business; 

import java.io.Serializable; 
import java.util.List; 

import org.hibernate.Criteria; 
import org.hibernate.HibernateException; 
import org.hibernate.Session; 
import org.hibernate.criterion.DetachedCriteria; 
import org.hibernate.criterion.Projections; 
import org.springframework.orm.hibernate3.HibernateCallback; 
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 

import com.javaeye.common.util.PaginationSupport; 

public abstract class AbstractManager extends HibernateDaoSupport { 

        
private boolean cacheQueries = false; 

        
private String queryCacheRegion; 

        
public void setCacheQueries(boolean cacheQueries) { 
                
this.cacheQueries = cacheQueries; 
        } 

        
public void setQueryCacheRegion(String queryCacheRegion) { 
                
this.queryCacheRegion = queryCacheRegion; 
        } 

        
public void save(final Object entity) { 
                getHibernateTemplate().save(entity); 
        } 

        
public void persist(final Object entity) { 
                getHibernateTemplate().save(entity); 
        } 

        
public void update(final Object entity) { 
                getHibernateTemplate().update(entity); 
        } 

        
public void delete(final Object entity) { 
                getHibernateTemplate().delete(entity); 
        } 

        
public Object load(final Class entity, final Serializable id) { 
                
return getHibernateTemplate().load(entity, id); 
        } 

        
public Object get(final Class entity, final Serializable id) { 
                
return getHibernateTemplate().get(entity, id); 
        } 

        
public List findAll(final Class entity) { 
                
return getHibernateTemplate().find("from " + entity.getName()); 
        } 

        
public List findByNamedQuery(final String namedQuery) { 
                
return getHibernateTemplate().findByNamedQuery(namedQuery); 
        } 

        
public List findByNamedQuery(final String query, final Object parameter) { 
                
return getHibernateTemplate().findByNamedQuery(query, parameter); 
        } 

        
public List findByNamedQuery(final String query, final Object[] parameters) { 
                
return getHibernateTemplate().findByNamedQuery(query, parameters); 
        } 

        
public List find(final String query) { 
                
return getHibernateTemplate().find(query); 
        } 

        
public List find(final String query, final Object parameter) { 
                
return getHibernateTemplate().find(query, parameter); 
        } 

        
public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria) { 
                
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, 0); 
        } 

        
public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int startIndex) { 
                
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, startIndex); 
        } 

        
public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize, 
                        
final int startIndex) { 
                
return (PaginationSupport) getHibernateTemplate().execute(new HibernateCallback() { 
                        
public Object doInHibernate(Session session) throws HibernateException { 
                                Criteria criteria 
= detachedCriteria.getExecutableCriteria(session); 
                                
int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); 
                                criteria.setProjection(
null); 
                                List items 
= criteria.setFirstResult(startIndex).setMaxResults(pageSize).list(); 
                                PaginationSupport ps 
= new PaginationSupport(items, totalCount, pageSize, startIndex); 
                                
return ps; 
                        } 
                }, 
true); 
        } 

        
public List findAllByCriteria(final DetachedCriteria detachedCriteria) { 
                
return (List) getHibernateTemplate().execute(new HibernateCallback() { 
                        
public Object doInHibernate(Session session) throws HibernateException { 
                                Criteria criteria 
= detachedCriteria.getExecutableCriteria(session); 
                                
return criteria.list(); 
                        } 
                }, 
true); 
        } 

        
public int getCountByCriteria(final DetachedCriteria detachedCriteria) { 
                Integer count 
= (Integer) getHibernateTemplate().execute(new HibernateCallback() { 
                        
public Object doInHibernate(Session session) throws HibernateException { 
                                Criteria criteria 
= detachedCriteria.getExecutableCriteria(session); 
                                
return criteria.setProjection(Projections.rowCount()).uniqueResult(); 
                        } 
                }, 
true); 
                
return count.intValue(); 
        } 
} 
用户在web层构造查询æ¡ä»¶detachedCriteriaåQŒå’Œå¯é€‰çš„startIndexåQŒè°ƒç”¨ä¸šåŠ¡bean的相应findByCriteriaæ–ÒŽ³•åQŒè¿”回一个PaginationSupport的实例psã€?

ps.getItems()得到已分™åµå¥½çš„结果集
ps.getIndexes()得到分页索引的数¾l?
ps.getTotalCount()得到æ€È»“果数
ps.getStartIndex()当å‰åˆ†é¡µç´¢å¼•
ps.getNextIndex()下一™å늃¦å¼?
ps.getPreviousIndex()上一™å늃¦å¼?

 

 



konhon ä¼˜åŽ 2006-04-07 10:37 å‘表评论
]]>
Hibernateé…置文äšg模æ¿http://www.aygfsteel.com/konhon/archive/2006/04/06/39538.htmlkonhon 优åŽkonhon 优åŽThu, 06 Apr 2006 02:45:00 GMThttp://www.aygfsteel.com/konhon/archive/2006/04/06/39538.htmlhttp://www.aygfsteel.com/konhon/comments/39538.htmlhttp://www.aygfsteel.com/konhon/archive/2006/04/06/39538.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/39538.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/39538.html <? xml version="1.0" encoding="UTF-8" ?>

<! DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

< hibernate-mapping >
  
< class  name ="Tuser"  table ="T_User" >
    
< id  name ="id"  column ="id"  type ="java.lang.Integer" >
      
< generator  class ="native" />
    
</ id >
    
< property  name ="name"  column ="name"  type ="java.lang.String" />
    
<!-- <property name="age" column="age" type="java.lang.Integer"/> -->
    
<!-- <property name="email" column="email" type="EMailList"/> -->
    
<!-- <property name="image" column="image" type="java.sql.Blob"/> -->
    
< property  name ="resume"  column ="resume"  type ="clob" />
  
</ class >
</ hibernate-mapping >
復åˆä¸»éµ
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

<hibernate-mapping>
  
<class name="TUser2" table="T_User2">
    
<composite-id name="userPk" class="TUserPk">
      
<key-property name="firstName" column="firstname" type="java.lang.String"/>
      
<key-property name="lastName" column="lastname" type="java.lang.String"/>
    
</composite-id>
    
<property name="age" column="age" type="java.lang.Integer"/>    
  
</class>
</hibernate-mapping>

DISCRIMINATOR
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

<hibernate-mapping>
  
<class name="TItem" table="T_Item">
    
<id name="id" column="id">
      
<generator class="native"/>
    
</id>
    
<discriminator column="category" type="java.lang.String"/>
    
<property name="manufacturer" column="manufacturer"/>
    
<property name="name" column="name"/>    
    
<subclass name="TBook" discriminator-value="1">
      
<property name="pageCount" column="pagecount"/>
    
</subclass>
    
<subclass name="TDVD" discriminator-value="2">
      
<property name="regionCode" column="regionCode"/>
    
</subclass>
  
</class>
</hibernate-mapping>


konhon ä¼˜åŽ 2006-04-06 10:45 å‘表评论
]]>
標准的Hibernate.cfg.xmlæ–‡äšg SQL Serverhttp://www.aygfsteel.com/konhon/archive/2006/04/06/39536.htmlkonhon 优åŽkonhon 优åŽThu, 06 Apr 2006 02:42:00 GMThttp://www.aygfsteel.com/konhon/archive/2006/04/06/39536.htmlhttp://www.aygfsteel.com/konhon/comments/39536.htmlhttp://www.aygfsteel.com/konhon/archive/2006/04/06/39536.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/39536.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/39536.html <! DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

< hibernate-configuration >
  
< session-factory >
    
< property  name ="hibernate.connection.url" >
       jdbc:Microsoft:sqlserver://192.168.10.236:1433;databaseName=Sample
    
</ property >
    
< property  name ="hibernate.connection.driver_class" >
       com.microsoft.jdbc.sqlserver.SQLServerDriver
    
</ property >
    
< property  name ="hibernate.connection.username" >
       sa
    
</ property >
    
< property  name ="hibernate.connection.password" >
       55
    
</ property >
    
< property  name ="dialect" >
       org.hibernate.dialect.SQLServerDialect
    
</ property >
    
< property  name ="hibernate.show_sql" >
       true
    
</ property >
    
< property  name ="hibernate.transaction.factory_class" >
       org.hibernate.transaction.JDBCTransactionFactory
    
</ property >
    
< mapping  resource ="TItem.hbm.xml" />     
  
</ session-factory >
</ hibernate-configuration >


konhon ä¼˜åŽ 2006-04-06 10:42 å‘表评论
]]>
Hibernate çš„CRUDhttp://www.aygfsteel.com/konhon/archive/2006/04/05/39306.htmlkonhon 优åŽkonhon 优åŽWed, 05 Apr 2006 01:37:00 GMThttp://www.aygfsteel.com/konhon/archive/2006/04/05/39306.htmlhttp://www.aygfsteel.com/konhon/comments/39306.htmlhttp://www.aygfsteel.com/konhon/archive/2006/04/05/39306.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/39306.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/39306.html Save
// 新增å為"Emma"的用戶記éŒ?br />Tuser user = new Tuser();
user.setName("Emma");
session.save(user);

Get
// å‡è¨­T_User表中存在ID = 1的記éŒ?br />Tuser user = (Tuser)session.get(Tuser.class, new Integer(1));

Delete
// å‡è¨­T_User表中存在ID = 1的記éŒ?br />Tuser user = (Tuser)session.get(Tuser.class, new Integer(1));
session.delete(user);

// 也å¯ä»¥é€šéŽHQL指定刪除æ¢äšg
Session.delete(" from Tuser where id = 1");

// 通éŽQuery接å£é€²æ–¼åŸºæ–¼HQL的刪除æ“ä½?br />Stirng hql = "delete Tuser where id = 1";
Query query = session.createQuery(hql);
query.executeUpdate();

Find
// 通éŽQuery接å£é€²è¡Œæ•¸æ“šæŸ¥è©¢
String hql="from Tuser user where user.name like ?";
Query query = session.createQuery(hql);
query.setParameter(0, "Cartier");

List list = query.list();

Iterator it = list.iterator();
while(it.hasNext()){
  Tuser user = (Tuser)it.next();
  System.out.println(user.getName());
}

// 通éŽCriteria接å£é€²è¡Œæ•¸æ“šæŸ¥è©¢
Criteria criteria = session.createCriteria(Tuser.class);
criteria.add(Expression.eq("name","Cariter"));

List list = criteria.list();

Iterator it = list.iterator();
while(it.hasNext()){
  Tuser user = (Tuser)it.next();
  System.out.println(user.getName());
}



konhon ä¼˜åŽ 2006-04-05 09:37 å‘表评论
]]>
Hibernate é€šéŽæ•¸æ“šç”¢ç”ŸåŸºç¤Žä»£ç¢¼ä¹‹æ•¸æ“šé€£æŽ¥é…置文äšghttp://www.aygfsteel.com/konhon/archive/2006/04/04/39177.htmlkonhon 优åŽkonhon 优åŽTue, 04 Apr 2006 07:42:00 GMThttp://www.aygfsteel.com/konhon/archive/2006/04/04/39177.htmlhttp://www.aygfsteel.com/konhon/comments/39177.htmlhttp://www.aygfsteel.com/konhon/archive/2006/04/04/39177.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/39177.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/39177.html使用MiddleGen for Hibernate工具.

é…ç½®./config/database下的mssql.xmlæ–‡äšg

     <!--  ===================================================================  -->
   
<!--  ant properties/targets for MS SQL Server                             -->
   
<!--  note: this is not a proper xml file (there is no root element)       -->
   
<!--        it is intended to be imported from a *real* xml file           -->
   
<!--  ===================================================================  -->

   
< property  name ="database.script.file"            value ="" />
   
< property  name ="database.driver.file"            value ="${lib.dir}/mssqlserver.jar" />
   
< property  name ="database.driver"                 value ="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
   
< property  name ="database.url"                    value ="jdbc:Microsoft:sqlserver://192.168.10.236:1433;databaseName=Sample" />
   
< property  name ="database.userid"                 value ="sa" />
   
< property  name ="database.password"               value ="kidsland%55" />
   
< property  name ="database.schema"                 value ="dbo" />
   
< property  name ="database.catalog"                value ="Sample" />

   
< property  name ="jboss.datasource.mapping"        value ="MS SQLSERVER" />
   
<!-- property name="jboss.datasource.mapping"       value="MS SQLSERVER2000"/ -->

注æ„: database.schema èˆ?database.catalog ä¸èƒ½ç‚ºç©º.



konhon ä¼˜åŽ 2006-04-04 15:42 å‘表评论
]]>
Hibernate : Query.list()ã€Query.iterator()çš„å€åˆ?/title><link>http://www.aygfsteel.com/konhon/archive/2005/08/12/9909.html</link><dc:creator>konhon 优åŽ</dc:creator><author>konhon 优åŽ</author><pubDate>Fri, 12 Aug 2005 03:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/konhon/archive/2005/08/12/9909.html</guid><wfw:comment>http://www.aygfsteel.com/konhon/comments/9909.html</wfw:comment><comments>http://www.aygfsteel.com/konhon/archive/2005/08/12/9909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/konhon/comments/commentRss/9909.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/konhon/services/trackbacks/9909.html</trackback:ping><description><![CDATA[<H1><A href="file:///E:/Java/HibernateGossip/HibernateGossip/HibernateGossip.html"></A> </H1>Query上有list()與iterator()æ–ÒŽ³•åQŒå…©è€…的差別在於list()æ–ÒŽ³•在讀å–資料時åQŒä¸¦ä¸æœƒåˆ©ç”¨åˆ°å¿«å–,而是直接å†å‘資料庫查詢,而iterator()則將讀å–到的資料寫到快å–ï¼Œä¸¦æ–¼è®€å–æ™‚冿¬¡åˆ©ç”¨ã€?BR><BR>來看看下é¢çš„½E‹å¼åQ?BR> <DIV style="MARGIN-LEFT: 40px"><SPAN style="FONT-WEIGHT: bold">Session session = sessionFactory.openSession();</SPAN><BR><SPAN style="FONT-WEIGHT: bold">        </SPAN><BR><SPAN style="FONT-WEIGHT: bold">Query query = session.createQuery("from User");</SPAN><BR><SPAN style="FONT-WEIGHT: bold">List users = query.list();</SPAN><BR><SPAN style="FONT-WEIGHT: bold">users = query.list();</SPAN><BR><SPAN style="FONT-WEIGHT: bold"></SPAN><BR><SPAN style="FONT-WEIGHT: bold">session.close();</SPAN><BR><SPAN style="FONT-WEIGHT: bold"></SPAN></DIV><SPAN style="FONT-WEIGHT: bold"><BR></SPAN>這個程å¼ç‰‡ŒD‰|œƒä½¿ç”¨å…©æ¬¡SQL來查詢資料åínåQ?BR> <DIV style="MARGIN-LEFT: 40px"><SPAN style="FONT-WEIGHT: bold">Hibernate: select user0_.id as id, user0_.name as name0_, user0_.age as age0_ from user user0_</SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">Hibernate: select user0_.id as id, user0_.name as name0_, user0_.age as age0_ from user user0_</SPAN><BR></DIV><SPAN style="FONT-WEIGHT: bold"><BR></SPAN>如果在Session關閉之å‰åQŒè¦å†å°‡æ‰€æœ‰è³‡æ–™åœ¨å–出åQŒå¯ä»¥ä‹É用iterator()æ–ÒŽ³•åQŒä¾‹å¦‚:<BR> <DIV style="MARGIN-LEFT: 40px"><SPAN style="FONT-WEIGHT: bold">Session session = sessionFactory.openSession();</SPAN><BR><SPAN style="FONT-WEIGHT: bold"></SPAN><BR><SPAN style="FONT-WEIGHT: bold">Query query = session.createQuery("from User");</SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">Iterator users = query.iterate();</SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">users = query.iterate();</SPAN><BR style="FONT-WEIGHT: bold"><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">session.close();</SPAN><BR></DIV><BR>這個程å¼ç‰‡ŒD‰|œƒä½¿ç”¨ä¸€‹Æ¡SQLå‘資料åín查詢åQŒç¬¬äºŒæ¬¡å‰‡ç›´æŽ¥å¾žå¿«å–中å–得資料:<BR> <DIV style="MARGIN-LEFT: 40px"><SPAN style="FONT-WEIGHT: bold">Hibernate: select user0_.id as col_0_0_ from user user0_</SPAN><BR></DIV><BR>由於使用iterator()æ–ÒŽ³•時會使用到Session levelå¿«å–åQŒæ‰€ä»¥åœ¨æŸ¥è©¢å¤§é‡è³‡æ–™æ™‚,會耗用大é‡çš„記憉™«”åQŒå¿…è¦æ™‚å¯ä»¥ä½¿ç”¨Sessionçš„evict()或clear()æ–ÒŽ³•來清除快å–ã€?BR><img src ="http://www.aygfsteel.com/konhon/aggbug/9909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/konhon/" target="_blank">konhon 优åŽ</a> 2005-08-12 11:25 <a href="http://www.aygfsteel.com/konhon/archive/2005/08/12/9909.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Hibernate之SessionFactory与Sessionhttp://www.aygfsteel.com/konhon/archive/2005/08/11/9767.htmlkonhon 优åŽkonhon 优åŽThu, 11 Aug 2005 01:14:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/08/11/9767.htmlhttp://www.aygfsteel.com/konhon/comments/9767.htmlhttp://www.aygfsteel.com/konhon/archive/2005/08/11/9767.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/9767.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/9767.html
在Hibernateåƒè€ƒæ‰‹å†Šä¸­çš?Quickstart with Tomcat 中,½Cºç¯„了一個HibernateUtilåQŒå®ƒä½¿ç”¨äº†ThreadLocal™åžåˆ¥ä¾†å¾ç«‹ä¸€å€‹Session½Ž¡ç†çš„輔助類åQŒé€™æ˜¯Hibernateçš„Session½Ž¡ç†ä¸€å€‹å»£ç‚ºæ‡‰ç”¨çš„解決æ–ÒŽ¡ˆåQŒThreadLocalæ˜?Thread-Specific Storage æ¨¡å¼ çš„ä¸€å€‹é‹ä½œå¯¦ä¾‹ã€?BR>
由於Thread-Specific Stroage模å¼å¯ä»¥æœ‰æ•ˆéš”離埯‚¡Œ¾R’所使用的資料,所以é¿é–‹Session的多埯‚¡Œ¾R’之間的資料å…Þq”¨å•題åQŒä»¥ä¸‹åˆ—出Hibernateåƒè€ƒæ‰‹å†Šä¸­çš„HibernateUtil™åžï¼š

HibernateUtil.java
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * @author Administrator
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 
*/

public class HibernateUtil {
    
private static Log log = LogFactory.getLog(HibernateUtil.class);

    
private static final SessionFactory sessionFactory;
    
static {
        
try {
            sessionFactory 
= new Configuration().configure()
                    .buildSessionFactory();
        }
 catch (Throwable ex) {
            log.error(
"Initial SessionFactory creation failed.", ex);
            
throw new ExceptionInInitializerError(ex);
        }

    }


    
public static final ThreadLocal session = new ThreadLocal();

    
public static Session currentSession() {
        Session s 
= (Session) session.get();
        
if (s == null{
            s 
= sessionFactory.openSession();
            session.
set(s);
        }

        
return s;
    }


    
public static void closeSession() {
        Session s 
= (Session) session.get();
        
if (s != null)
            s.clear();
        session.
set(null);
    }

}


在åŒä¸€å€‹åŸ·è¡Œç·’中,Session被暫存下來了åQŒä½†ç„¡é ˆæ“”心資料庫連çµConnectionæŒçºŒå ç”¨å•題åQŒHibernate會在真正需è¦è³‡æ–™åínæ“作時æ‰åQˆå¾žé€£æŽ¥æ± ä¸­åQ‰å–å¾—Connectionã€?

在程å¼ä¸­å¯ä»¥é€™éº¼ä½¿ç”¨HibernateUtilåQ?BR>
Session session = HibernateUtil.currentSession();
User user = (User) session.load(User.class, new Integer(1));
System.out.println(user.getName());
HibernateUtil.closeSession();

在Web應用½E‹å¼ä¸­ï¼Œå¯ä»¥è—‰åŠ©Filter來進行Session½Ž¡ç†åQŒåœ¨éœ€è¦çš„æ™‚候開啟SessionåQŒä¸¦åœ¨Request¾iæŸä¹‹å¾Œé—œé–‰SessionåQŒé€™å€‹éƒ¨ä»½ï¼Œåœ?JavaWorld 技術論å£?/FONT> çš?Wiki 上有½‹?在filter中關閉session å¯ä»¥åƒè€?/FONT>ã€?BR>

]]>
如何学习Hibernate[轉]http://www.aygfsteel.com/konhon/archive/2005/08/09/9665.htmlkonhon 优åŽkonhon 优åŽTue, 09 Aug 2005 08:14:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/08/09/9665.htmlhttp://www.aygfsteel.com/konhon/comments/9665.htmlhttp://www.aygfsteel.com/konhon/archive/2005/08/09/9665.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/9665.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/9665.htmlhttp://www.javajia.com

Hibernate入门å®ÒŽ˜“åQŒæŽŒæ¡ç²¾é€šæˆ‘ä¹Ÿä¸æ•¢è‡ªå¤¸ã€‚我½W¬ä¸€é看Hibernate文档的时候也觉得很åƒåŠ›ï¼Œä½†ä¸æ˜¯å› ä¸ºHibernate难掌æ¡è€Œæ„Ÿåˆ°åƒåŠ›ï¼Œæ˜¯å› ä¸ºHibernate文档处处都是æŒä¹…层设计的¾l验和最佛_®žè·üc€‚Hibernate文档准确的æ¥è¯ß_¼Œ¾l大部分内容都在讲对象的æŒä¹…å±‚è®¾è®¡ï¼Œè€Œä¸æ˜¯ç®€å•çš„Hibernate使用åQŒä‹É用问题查Java docž®±å¤Ÿäº†ã€‚所以学习HibernateåQŒä¸»è¦æ˜¯åœ¨å­¦ä¹ æŒä¹…层的设计模å¼ï¼Œå¦‚果你把Hibernate文档都看完了åQŒè¿˜æ•´å¤©åªä¼šæé‚£äº?nbsp;Hibernate的酾|®é—®é¢˜ï¼ŒHibernate的类调用问题åQŒæˆ‘觉得˜q™æ ·çš„äh˜q˜æ²¡æœ‰çœŸæ­£çš„入门åQŒç®—是白学了ã€?nbsp;

我对Hibernate çš„那些酾|®ä¹Ÿä¸æ˜¯ç‰¹åˆ«¾U¯ç†ŸåQŒæ¯‹Æ¡å†™hbmåQŒéƒ½è¦å¯¹ç…§æ–‡æ¡£ä¸€ç‚¹ç‚¹çš„æ£€æŸ¥ï¼›¾c»è°ƒç”¨å‚æ•îC¹Ÿä¸å¤ªè®°å¾—åQŒå†™ä»£ç ä¹Ÿè¦Java docéšæ—¶å¤‡æŸ¥ã€‚但是我在学习Hibernate的时候å³é›†ä¸­æ‰€æœ‰ç²¾åŠ›æ¥ç†è§£Hibernateçš„è¿è¡ŒåŽŸç†ï¼Œé›†ä¸­¾_‘ÖŠ›æ¥æŽŒæ¡æŒä¹…层设计应该把æ¡çš„原则和技巧,˜q™äº›æ‰å¯¹æˆ‘是最é‡ç”¨çš„东è¥Ñ€‚毫ä¸å¤¸å¼ çš„è¯ß_¼Œå­¦ä¹ å®ŒHibernateåQŒæˆ‘对JDBC的编½E‹ä¹Ÿæé«˜äº†ä¸€å¤§æˆªåQŒæ›´ä¸è¦è¯´å¯¹äºŽJ2EE架构的æŒä¹…层的框架设计,基本上是了然于胸了,å³ä‹Éž®†æ¥æ¢äº†APIåQŒä¸ç”¨Hibernate的,改用JDOåQŒCastor什么的åQŒè¿™äº›ç»éªŒä¸€æ ïL…§ç”¨ã€?nbsp;

学习Hibernate主è¦ä¸æ˜¯åœ¨å­¦ä¹ Hibernat怎么é…ç½®åQŒç”¨å·¥å…·æ€Žä¹ˆç”Ÿæˆhbmæ–‡äšgåQŒå¦‚果你把é‡ç‚ÒŽ”¾åœ¨è¿™é‡Œï¼ŒåŸºæœ¬ä¸Šç­‰äºŽç™½å­¦äº†Hibernate。Hibernate的精åŽåœ¨äºŽæ— ä¸Žäëu比的çµåéy的对象æŒä¹…层设计åQŒè¿™äº›æŒä¹…层设计¾l验ä¸ä¼šå› äؓ你ä¸ç”¨Hibernate而ä“á失掉åQŒæˆ‘自己学习HibernateåQŒå·²¾l明显感觉到å¯ÒŽŒä¹…å±‚è®¾è®¡èƒ½åŠ›å·²ç»é•¿äº†å¾ˆå¤š¾l验å€égº†åQŒè¿™äº›ç»éªŒç”šè‡³ä¸å…‰å¯ä»¥ç”¨åœ¨Java上,用在.net上也是一栗÷€‚所以Hibernateé…ç½®çš„å­¦ä¹ ï¼Œæˆ‘åªæ˜¯ç®€å•看看,用的时候知é“到那里åŽÀLŸ¥ž®Þp¡Œäº†ï¼Œä¸€å †å¤æ‚的生æˆå·¥å…·æˆ‘根本就看都ä¸åŽ»çœ‹ï¼Œ˜q™æ ·½Ž—下æ¥ï¼ŒæŽŒæ¡Hibernate的酾|®ï¼Œå¯ä»¥ç”¨Hibernateæ¥æ›¿ä»£JDBC写程åºï¼Œä¸è¿‡èŠ×ƒ¸Š3天时间就­‘›_¤Ÿäº†ã€‚我æƒ?天时间对你æ¥è¯´ä¸½Ž—很奢侈的学习代价å§ã€?nbsp;

ä¸ÞZ»€ä¹ˆæˆ‘˜q™ä¹ˆå¼ø™°ƒå­¦ä¹ Hibernate的对象æŒä¹…层设计ç†å¿µå‘¢ï¼Ÿé‚£å°±çœ‹ä½ çš„ç†æƒÏx˜¯æƒ³ä¸€è¾ˆå­åšä¸€ä¸ªç¨‹åºå‘˜å‘¢ï¼Ÿ˜q˜æ˜¯æƒ›_‘更高的方å‘å‘展呢åQŸä»Ž¾U¯åšæŠ€æœ¯çš„è§’åº¦æ¥è¯´åQŒèŒä¸šå‘展的最高点是“系¾lŸæž¶æž„师â€ï¼ŒBill Gates䏿˜¯˜q˜å«åšå¾®è½¯çš„首席¾pÈ»Ÿæž¶æž„师å—åQŸSystem ArchitectèŒä½éœ€è¦çš„æ˜¯ä½ çš„学习和领悟能力åQŒå¦‚果你ä¸èƒ½æŠŠå­¦ä¹ Hibernate得到的设计ç»éªŒè¿ç”¨åˆ°å…¶å®ƒåœ°æ–¹åQŒé‚£ä¹ˆä½ æ˜¯å¤±è´¥çš„åQŒä¹Ÿæ²¡æœ‰èµ„æ ¼å?nbsp;System Architectã€?nbsp;

ä¸ç®¡JDO也好åQŒHibernate也好åQŒTopLink也好åQŒCocoBase也好åQŒè¿˜æ˜?nbsp;CastoråQŒè¿˜æ˜¯ä»€ä¹ˆTorqueåQŒOJBåQŒèÊY件的使用和酾|®æ–¹æ³•å¯ä»¥å„异,但本质上都是ORMåQŒéƒ½æ˜¯å¯¹JDBC的对象æŒä¹…层ž®è£…åQŒæ‰€ä»¥ä¸‡å˜ä¸¼›Õd…¶å®—,如果你完整的学习和掌æ¡HibernateèŠ×ƒº†1个月的时é—ß_¼Œé‚£ä¹ˆä½ å†å­¦ä¹ OJB的时间ä¸åº”该­‘…过1ä¸ªæ˜ŸæœŸï¼Œå› äØ“ä½ å·²¾l把对象æŒä¹…层设计都了然于胸了,你需è¦çš„åªæ˜¯ç†Ÿæ‚‰ä¸€ä¸‹OJBçš„API和酾|®çŞ了,至于怎么˜q用OJB˜q›è¡ŒæŒä¹…层的开å‘你早就已ç»ç†Ÿæ‚‰äº†ã€?nbsp;

所以当你掌æ¡äº†ä¸¤ç§ä»¥ä¸Šçš„ORMåQŒä½ åº”è¯¥èƒ½å¤Ÿä¸æ‹˜äºŽä‹É用的ORM软äšgçš„é™åˆÓž¼Œè®¾è®¡å‡ºé€‚åˆäºŽä½ çš„项目的æŒä¹…层æ¥åQŒè¿™æ‰æ˜¯System Architect的水准。用金庸ž®è¯´æ¥æ‰“个比æ–ÒŽ¥è¯´å§åQŒå¼ æ— å¿Œå­¦å¤ªæžå‰‘åQŒåªè®°å‰‘æ„,ä¸è®°å‰‘æ‹›åQŒè¿™æ‰æ˜¯çœŸæ­£çš„高手,而低手就åªä¼šåŽÕd­¦ä¹ å‰‘招,而ä¸åŽ»é¢†ä¼šå‰‘æ‹›èƒŒåŽè•´å«çš„剑æ„åQŒæ‰€ä»¥ä¸€è¾ˆå­éƒ½æ˜¯ä½Žæ‰‹åQŒæ°¸˜qœä¸èƒ½çœŸæ­£å­¦ä¼šå¤ªæžå‰‘。所以周颠看到张三丰½W¬äºŒ‹Æ¡æ¼”½Cºå¤ªæžå‰‘åQŒæ‹›å¼å®Œå…¨ä¸åŒå°±ä»¥äؓ是å¦ä¸€å¥—东西,其实本质上都一栗÷€‚学习Hibernate也ä¸è¦èˆæœ¬é€æœ«çš„去学儿U五花八门的工具åQŒé‡ç‚ÒŽŽŒæ¡å®ƒçš„对象æŒä¹…层设计ç†å¿µã€?

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ³¤ÁëÏØ| ¸§Ô¶ÏØ| ɽµ¤ÏØ| ÃÏÖÝÊÐ| ˳²ýÏØ| º£Ô­ÏØ| ¶¨ÏåÏØ| Æß̨ºÓÊÐ| ¶«Ïç×å×ÔÖÎÏØ| зáÏØ| À×ÖÝÊÐ| ³¤Ô«ÏØ| µÂ°²ÏØ| Æ½Ë³ÏØ| ¾ÅÁúÏØ| É£Ö²ÏØ| ¼¦Î÷ÊÐ| »ýʯɽ| ½Ò¶«ÏØ| ÓãÌ¨ÏØ| ÁÉÑôÊÐ| »³»¯ÊÐ| ½ðƽ| ɽ¶«Ê¡| ÆÕ°²ÏØ| °×ɽÊÐ| ³¤µºÏØ| ±¦¼¦ÊÐ| ¼¦ÔóÏØ| ÏóÉ½ÏØ| ÁÙä¬ÏØ| ¸¡ÁºÏØ| Û°³ÇÏØ| ¬ÊÏÏØ| ¼ÎºÌÏØ| Èê³ÇÏØ| ÖîôßÊÐ| кÓÏØ| °×ÀÊÏØ| ºéÑÅÏØ| ÁºÉ½ÏØ|