栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring和Hibernate的整合操作示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring和Hibernate的整合操作示例

本文实例讲述了Spring和Hibernate的整合操作。分享给大家供大家参考,具体如下:

一 web配置



  
    org.springframework.web.context.ContextLoaderListener
    
  
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    
  @SuppressWarnings("unchecked")
  protected List findByPage(final String hql,
    final int pageNo, final int pageSize)
  {
    // 通过一个HibernateCallback对象来执行查询
    List list = getHibernateTemplate()
      .execute(new HibernateCallback>()
    {
      // 实现HibernateCallback接口必须实现的方法
      public List doInHibernate(Session session)
      {
 // 执行Hibernate分页查询
 List result = session.createQuery(hql)
   .setFirstResult((pageNo - 1) * pageSize)
   .setMaxResults(pageSize)
   .list();
 return result;
      }
    });
    return list;
  }
  
  @SuppressWarnings("unchecked")
  protected List findByPage(final String hql , final int pageNo,
    final int pageSize , final Object... params)
  {
    // 通过一个HibernateCallback对象来执行查询
    List list = getHibernateTemplate()
      .execute(new HibernateCallback>()
    {
      // 实现HibernateCallback接口必须实现的方法
      public List doInHibernate(Session session)
      {
 // 执行Hibernate分页查询
 Query query = session.createQuery(hql);
 // 为包含占位符的HQL语句设置参数
 for(int i = 0 , len = params.length ; i < len ; i++)
 {
   query.setParameter(i + "" , params[i]);
 }
 List result = query.setFirstResult((pageNo - 1) * pageSize)
   .setMaxResults(pageSize)
   .list();
 return result;
      }
    });
    return list;
  }
}

baseDaoHibernate4.java

package org.crazyit.common.dao.impl;
import org.hibernate.*;
import java.util.List;
import java.io.Serializable;
import org.crazyit.common.dao.*;
public class baseDaoHibernate4 implements baseDao
{
  // DAO组件进行持久化操作底层依赖的SessionFactory组件
  private SessionFactory sessionFactory;
  // 依赖注入SessionFactory所需的setter方法
  public void setSessionFactory(SessionFactory sessionFactory)
  {
    this.sessionFactory = sessionFactory;
  }
  public SessionFactory getSessionFactory()
  {
    return this.sessionFactory;
  }
  // 根据ID加载实体
  @SuppressWarnings("unchecked")
  public T get(Class entityClazz , Serializable id)
  {
    return (T)getSessionFactory().getCurrentSession()
      .get(entityClazz , id);
  }
  // 保存实体
  public Serializable save(T entity)
  {
    return getSessionFactory().getCurrentSession()
      .save(entity);
  }
  // 更新实体
  public void update(T entity)
  {
    getSessionFactory().getCurrentSession().saveOrUpdate(entity);
  }
  // 删除实体
  public void delete(T entity)
  {
    getSessionFactory().getCurrentSession().delete(entity);
  }
  // 根据ID删除实体
  public void delete(Class entityClazz , Serializable id)
  {
    getSessionFactory().getCurrentSession()
      .createQuery("delete " + entityClazz.getSimpleName()
 + " en where en.id = ?0")
      .setParameter("0" , id)
      .executeUpdate();
  }
  // 获取所有实体
  public List findAll(Class entityClazz)
  {
    return find("select en from "
      + entityClazz.getSimpleName() + " en");
  }
  // 获取实体总数
  public long findCount(Class entityClazz)
  {
    List l = find("select count(*) from "
      + entityClazz.getSimpleName());
    // 返回查询得到的实体总数
    if (l != null && l.size() == 1 )
    {
      return (Long)l.get(0);
    }
    return 0;
  }
  // 根据HQL语句查询实体
  @SuppressWarnings("unchecked")
  protected List find(String hql)
  {
    return (List)getSessionFactory().getCurrentSession()
      .createQuery(hql)
      .list();
  }
  // 根据带占位符参数HQL语句查询实体
  @SuppressWarnings("unchecked")
  protected List find(String hql , Object... params)
  {
    // 创建查询
    Query query = getSessionFactory().getCurrentSession()
      .createQuery(hql);
    // 为包含占位符的HQL语句设置参数
    for(int i = 0 , len = params.length ; i < len ; i++)
    {
      query.setParameter(i + "" , params[i]);
    }
    return (List)query.list();
  }
  
  @SuppressWarnings("unchecked")
  protected List findByPage(String hql,
     int pageNo, int pageSize)
  {
    // 创建查询
    return getSessionFactory().getCurrentSession()
      .createQuery(hql)
      // 执行分页
      .setFirstResult((pageNo - 1) * pageSize)
      .setMaxResults(pageSize)
      .list();
  }
  
  @SuppressWarnings("unchecked")
  protected List findByPage(String hql , int pageNo, int pageSize
    , Object... params)
  {
    // 创建查询
    Query query = getSessionFactory().getCurrentSession()
      .createQuery(hql);
    // 为包含占位符的HQL语句设置参数
    for(int i = 0 , len = params.length ; i < len ; i++)
    {
      query.setParameter(i + "" , params[i]);
    }
    // 执行分页,并返回查询结果
    return query.setFirstResult((pageNo - 1) * pageSize)
      .setMaxResults(pageSize)
      .list();
  }
}

BookDao.java

package org.crazyit.booksys.dao;
import java.util.List;
import org.crazyit.booksys.domain.Book;
import org.crazyit.common.dao.baseDao;
public interface BookDao extends baseDao
{
}

BookDaoHibernate4.java

package org.crazyit.booksys.dao.impl;
import java.util.List;
import org.crazyit.booksys.dao.BookDao;
import org.crazyit.booksys.domain.Book;
import org.crazyit.common.dao.impl.baseDaoHibernate3;
import org.crazyit.common.dao.impl.baseDaoHibernate4;
public class BookDaoHibernate4 extends baseDaoHibernate4
  implements BookDao
{
}

九 测试

 

更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号