??xml version="1.0" encoding="utf-8" standalone="yes"?>成人中文视频,欧美国产日韩一区,久久久久久久久久久久久久久久久久avhttp://www.aygfsteel.com/dnalncjm/zh-cnThu, 19 Jun 2025 20:22:58 GMTThu, 19 Jun 2025 20:22:58 GMT60hibernate实体对象数据库生成(接)http://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112536.html易天易天Sat, 21 Apr 2007 18:32:00 GMThttp://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112536.htmlhttp://www.aygfsteel.com/dnalncjm/comments/112536.htmlhttp://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112536.html#Feedback0http://www.aygfsteel.com/dnalncjm/comments/commentRss/112536.htmlhttp://www.aygfsteel.com/dnalncjm/services/trackbacks/112536.html3?span lang="EN-US">Hibernate?span lang="EN-US">DAO实现

DAO对象是模块化的数据库讉KlgQ?span lang="EN-US">DAO对象通常包括Q对持久化类的基?span lang="EN-US">CRUD操作Q插入、查询、更新、删除)操作?span lang="EN-US">Spring?span lang="EN-US">Hibernate?span lang="EN-US">DAO实现提供了良好的支持。主要有如下两种方式?span lang="EN-US">DAO实现Q?span lang="EN-US">

l承HibernateDaoSupport的实?span lang="EN-US">DAO

ZHibernate3.0实现DAO

不管采用哪一U实玎ͼq种DAO对象都极好地融合?span lang="EN-US">Spring?span lang="EN-US">ApplicationContext中,遵@依赖注入模式Q提高解耦?span lang="EN-US">

l承HibernateDaoSupport实现DAO

Spring?span lang="EN-US">Hibernate?span lang="EN-US">DAO提供工具c:HibernateDaoSupport。该cM要提供如下两个方法,方便DAO的实玎ͼ

public final HibernateTemplate getHibernateTemplate()

public final void setSessionFactory(SessionFactory sessionFactory)

其中Q?span lang="EN-US">setSessionFactoryҎ用来接收Spring?span lang="EN-US">ApplicationContext的依赖注入,可接攉|在Spring?span lang="EN-US">SessionFactory实例Q?span lang="EN-US">getHibernateTemplateҎ则用来根据刚才的SessionFactory产生SessionQ最后生?span lang="EN-US">HibernateTemplate来完成数据库讉K?span lang="EN-US">

HibernateTemplate的常规用?/span>

HibernateTemplate提供非常多的常用Ҏ来完成基本的操作Q比如通常的增加、删除、修攏V查询等操作Q?span lang="EN-US">Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,可完成大多?span lang="EN-US">DAO对象?span lang="EN-US">CRUD操作。下面是HibernateTemplate的常用方法简介:

void delete(Object entity)Q删除指定持久化实例

deleteAll(Collection entities)Q删除集合内全部持久化类实例

find(String queryString)Q根?span lang="EN-US">HQL查询字符串来q回实例集合

findByNamedQuery(String queryName)Q根据命名查询返回实例集?span lang="EN-US">

get(Class entityClass, Serializable id)Q根据主键加载特定持久化cȝ实例

save(Object entity)Q保存新的实?span lang="EN-US">

saveOrUpdate(Object entity)Q根据实例状态,选择保存或者更?span lang="EN-US">

update(Object entity)Q更新实例的状态,要求entity是持久状?span lang="EN-US">

setMaxResults(int maxResults)Q设|分늚大小

Hibernate的复杂用?/span>HibernateCallback

HibernateTemplateq提供一U更加灵zȝ方式来操作数据库Q通过q种方式可以完全使用Hibernate的操作方式?span lang="EN-US">HibernateTemplate的灵z访问方式是通过如下两个Ҏ完成Q?span lang="EN-US">

Object execute(HibernateCallback action)

List execute(HibernateCallback action)

q两个方法都需要一?span lang="EN-US">HibernateCallback的实例,HibernateCallback实例可在M有效?span lang="EN-US">Hibernate数据讉K中用。程序开发者通过HibernateCallbackQ可以完全?span lang="EN-US">Hibernate灉|的方式来讉K数据库,解决SpringHibernate后灵zL不的~陷?span lang="EN-US">HibernateCallback是一个接口,该接口只有一个方?span lang="EN-US">doInHibernate(org.hibernate.Session session)Q该Ҏ只有一个参?span lang="EN-US">Session?span lang="EN-US">

通常Q程序中采用实现HibernateCallback的匿名内部类来获?span lang="EN-US">HibernateCallback的实例,ҎdoInHibernate的方法体是Spring执行的持久化操作

注意Q方?span lang="EN-US">doInHibernateҎ内可以访?span lang="EN-US">SessionQ该Session对象是绑定到该线E的Session实例。该Ҏ内的持久层操作,与不使用Spring时的持久层操作完全相同。这保证对于复杂的持久层讉KQ依然可以?span lang="EN-US">Hibernate的访问方式?/span>

下面Q让我们看一下接 CRUD的一些方法的实现吧:


import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import test.dao.Dao;

public class DaoImpl extends HibernateDaoSupport implements Dao{

  
public List findAllBy(final Class clazz, final String name, final Object value) {
    
// 实现Ҏ属性名和属性值查询对象,q回唯一对象
    return getHibernateTemplate().executeFind(new HibernateCallback(){
      
public Object doInHibernate(Session session) throws HibernateException,SQLException{
        Criteria criteria
=session.createCriteria(clazz);
        criteria.add(Restrictions.eq(name, value));
        criteria.setCacheable(
true);
        
        
return criteria.list();
        
      }
    });
  }

  
public List findAllBy(final Class clazz, final Map filter,final Map sorMap,final int pageNo,final int pageSize) {
    
// 实现q回 ҎMap中过滤条件和分页参数查询
    return getHibernateTemplate().executeFind(new HibernateCallback(){
      
public Object doInHibernate(Session session) throws HibernateException,SQLException{
        
        Criteria criteria
=session.createCriteria(clazz);
        filterCriteria(criteria, filter);
        sortCriteria(criteria,sorMap);
        
if (pageNo != -1) {
        criteria.setFirstResult(pageNo 
> 1
          
? (pageNo - 1* pageSize
          : 
0);
        criteria.setMaxResults(pageSize);
      }
      criteria.setCacheable(
true);
      
return criteria.list();
       
      }
    });
  }
  
/**
   * 构造criteria的过滤条件的回调函数
   
*/
  
protected void filterCriteria(Criteria criteria, Map filter) {
    
if (MapUtils.isNotEmpty(filter)) {
      
for (Iterator iterator = filter.keySet().iterator(); iterator.hasNext();) {
        String fieldName 
= (String) iterator.next();
        criteria.add(Restrictions.eq(fieldName, filter.get(fieldName)));
      }
    }
  }

  
/**
   * 构造Criteria的排序条?
   *
   * 
@param sortMap  排序条g.
   * 
@param criteria Criteria实例.
   
*/
  
protected void sortCriteria(Criteria criteria, Map sortMap) {
    
if (MapUtils.isNotEmpty(sortMap)) {
      
for (Iterator iterator = sortMap.keySet().iterator(); iterator.hasNext();) {
        String fieldName 
= (String) iterator.next();
        String orderType 
= (String) sortMap.get(fieldName);
        criteria.addOrder(StringUtils.equalsIgnoreCase(
"asc", orderType)
          
? Order.asc(fieldName)
          : Order.desc(fieldName));
      }
    }
  }
  
  
public Object findBy(final Class clazz, final String name, final Object value) {
    
// 实现Ҏ对象属性名和属性|q回唯一对象
    
    
return getHibernateTemplate().execute(new HibernateCallback(){

      
public Object doInHibernate(Session session) throws HibernateException, SQLException {
        
// TODO Auto-generated method stub
        Criteria criteria=session.createCriteria(clazz);
        criteria.add(Restrictions.eq(name,value));
        List list
=criteria.list();
        
        
return list==null ||list.isEmpty()?null:list.iterator().next();
      }
      
    });
  }

  
public Object getObject(Class clazz, Serializable id) {
    
// 实现q回与此cd应主键ؓid的所有?/span>
    Object o=getHibernateTemplate().get(clazz, id);
    
if(o==null){
    
throw new ObjectRetrievalFailureException(clazz,id);
    }
    
return o;
  }

  
public List getObjects(Class clazz) {
    
// 实现q回entitycd?/span>
    return getHibernateTemplate().loadAll(clazz);
  }

  
public void removeObject(Class clazz, Serializable id) {
    
// 实现Ҏ数据库中与此cd应表的主键(idQ删除此对象
    getHibernateTemplate().delete(getObject(clazz,id));
    
  }

  
public void removeObject(Object o) {
    
// 实现删除对象
    getHibernateTemplate().delete(o);
  }

  
public void removeObjects(Collection objects) {
    
// TODO Auto-generated method stub
    getHibernateTemplate().deleteAll(objects);
  }

  
public Serializable saveObject(Object o) {
    
// 实现序列化保存对?/span>
    return getHibernateTemplate().save(o);
  }

  
public int total(Class clazz, Map filter) {
    
return 0;
    
// TODO Auto-generated method stub
    
  }

  
public void updateObject(Object o) {
    
// 实现更新对象
    getHibernateTemplate().update(o);
  }

}

然后Q我们要配置.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 
    beans
    PUBLIC 
    
"-//SPRING//DTD BEAN 2.0//EN" 
    
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
    
<bean
        id
="Dao"
        
class="test.dao.hibernate.DaoImpl">
        
<property
            name
="sessionFactory"
            ref
="sessionFactory" />
    
</bean>
</beans>



易天 2007-04-22 02:32 发表评论
]]>
hibernate实体对象数据库生?/title><link>http://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112535.html</link><dc:creator>易天</dc:creator><author>易天</author><pubDate>Sat, 21 Apr 2007 18:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112535.html</guid><wfw:comment>http://www.aygfsteel.com/dnalncjm/comments/112535.html</wfw:comment><comments>http://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dnalncjm/comments/commentRss/112535.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dnalncjm/services/trackbacks/112535.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-size: 12pt; font-family: 宋体;">首先Q我们先要理解一?/span><span style="font-size: 12pt;" lang="EN-US">相关知识点:</span></p> <p class="MsoNormal"> </p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"> </p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 15pt; line-height: 150%; font-family: 黑体;" lang="EN-US">1</span><span style="font-size: 15pt; line-height: 150%; font-family: 黑体;">、对象的序列化:<span lang="EN-US">Serializable<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">对象序列化是对象怹化的一U机Ӟ可以把序列化当成一U深度克隆的ҎQ确切的说应该是对象的序列化Q一般程序在q行Ӟ产生对象Q这些对象随着E序的停止运行而消失,但如果我们想把某些对象(因ؓ是对象,所以有各自不同的特性)保存下来Q在E序l止q行后,q些对象仍然存在Q可以在E序再次q行时读取这些对象的|或者在其他E序中利用这些保存下来的对象。这U情况下p用到对象的序列化。一般对象序列化后会保存在存储设备(盘Q上Q以文g的Ş式出现?/span><span style="font-size: 12pt; line-height: 150%;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 15pt; line-height: 150%; font-family: 黑体;" lang="EN-US">2</span><span style="font-size: 15pt; line-height: 150%; font-family: 黑体;">?span lang="EN-US">CRUD<o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;" lang="EN-US"><span>       </span>CRUD</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">是增加、读取、更新和删除几个单词的首字母?/span><span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> </span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">?/span><span style="font-size: 12pt; line-height: 150%;" lang="EN-US">Create,Read,Update,Delete</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">四个单词的羃写,主要被用在描qY件系l中数据库或者持久层的基本操作功能?/span><br><span style="font-size: 12pt; line-height: 150%; color: #ff6600;" lang="EN-US">(In computing, CRUD is an acronym for create, retrieve, update, and delete. It is used to refer to the basic functions of a database or persistence layer in a software system.)<o:p></o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;" lang="EN-US"><span>       </span></span><span style="font-family: 宋体;">在进?/span><span lang="EN-US">Hibernate</span><span style="font-family: 宋体;">开发过E中Q我们通常会?/span><span lang="EN-US">DAO</span><span style="font-family: 宋体;">模式Q有一些通用的数据操作方法,?/span><span lang="EN-US">CRUD</span><span style="font-family: 宋体;">Q我们通常会将q些Ҏ集中在一?/span><span lang="EN-US">DAO</span><span style="font-family: 宋体;">Q这样会便很多。DAO数据讉K接口如下Q?/span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><br><span style="font-family: 宋体;"> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.Serializable;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Collection;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Map;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> Dao {<br><br>  List getObjects(Class clazz);</span><span style="color: #008000;">//</span><span style="color: #008000;">q回数据库中与此cd应的表的所有|即entitycd中的所有信?/span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  Object getObject(Class clazz, Serializable id);</span><span style="color: #008000;">//</span><span style="color: #008000;">q回与此cd应的表主键ؓid的所有?/span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  Serializable saveObject(Object o);</span><span style="color: #008000;">//</span><span style="color: #008000;">序列化保存对象?/span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> updateObject(Object o);</span><span style="color: #008000;">//</span><span style="color: #008000;">更新此对?/span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> removeObject(Class clazz, Serializable id);</span><span style="color: #008000;">//</span><span style="color: #008000;">Ҏ数据库中与此cd应表的主键(idQ删除此对象</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> removeObject(Object o);</span><span style="color: #008000;">//</span><span style="color: #008000;">删除此对?/span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>  </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> removeObjects(Collection objects);<br><br>  </span><span style="color: #008000;">/*</span><span style="color: #008000;"><br>   * Ҏ属性名和属性值查询对象,q回唯一对象<br>   </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>  Object findBy(Class clazz, String name, Object value);<br><br>  </span><span style="color: #008000;">/*</span><span style="color: #008000;"><br>   * Ҏ属性名和属性值查询对象,q回所以符合条件的对象<br>   </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>  List findAllBy(Class clazz, String name, Object value);<br><br>  </span><span style="color: #008000;">/**</span><span style="color: #008000;"><br>   * ҎMap中过滤条件和分页参数查询.<br>   *<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> filter   qo条g.<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> sortMap  排序条g.<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> pageNo   当前늠<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> pageSize 每页昄记录?<br>   </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br>  List findAllBy(Class clazz, Map filter, Map sorMap, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> pageNo, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> pageSize);<br><br>  </span><span style="color: #008000;">/**</span><span style="color: #008000;"><br>   * W合filterqo条g的记录L<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> clazz<br>   * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> filter<br>   * </span><span style="color: #808080;">@return</span><span style="color: #008000;"><br>   </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>  </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> total(Class clazz, Map filter);<br>}</span></div> </span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-family: 宋体;"><br></span></p> <p class="MsoNormal" style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 15pt; line-height: 150%; font-family: 黑体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><br><span style="font-size: 12pt;" lang="EN-US"></span><span style="font-size: 12pt; font-family: 宋体;"></span><span style="font-size: 12pt;" lang="EN-US"><o:p></o:p></span></p><img src ="http://www.aygfsteel.com/dnalncjm/aggbug/112535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dnalncjm/" target="_blank">易天</a> 2007-04-22 02:27 <a href="http://www.aygfsteel.com/dnalncjm/archive/2007/04/22/112535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϰˮ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ͨμ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֦</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϻ</a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˷</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ʩ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">麣</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">»</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">״</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>