`
pengfeifei26
  • 浏览: 245430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

hibernate使用

 
阅读更多
http://blog.csdn.net/lovesummerforever/article/details/19169779
http://www.ibm.com/developerworks/cn/java/l-hibernate1/
HibernateDaoSupport
由于Hibernate集成了JDBC,所以在访问数据库时,与直接使用JDBC访问数据库相比,Hibernate在连接、访问数据库时的代码减少了很大一大半。但由此而来也相应必须增加访问Hibernate配置文件和SessionFactory、Session的打开、关闭的代码。为了解决以上相同代码出现的复用问题,Hibernate对此又进行了再一次封装,于是,幸运地出现了HibernateDaoSupport。因此,在使用HibernateDaoSupport模板对数据库访问时,更加方便、简单,特别是进行简单的增删改查。
 
1、 继承了HibernateDaoSupport类的类获取session时,已不可用SessionFactory.OpenSessioon的形式来获取Session了,由于HibernateDaoSupport本身已有获取session的方法getSession(),所以直接用Session se=this.getSession();来获取


2、  在依据hql获取用户信息时,继承了HibernateDaoSupport类的类中不能在使用Query类了,而是用List list = this.getHibernateTemplate().find(hql);形式来获取实体类集合
/** 
*
* 对企业信息的简单增删改查。 
*/
public class EnterpriseDaoImpl extends HibernateDaoSupport implements 
        EnterpriseDao {  
    /**  
     * @param Enterprise  
     * 删除某条企业信息。  
     */ 
    public void del(Enterprise enterprise) {  
        this.getHibernateTemplate().delete(enterprise);  
    }  
    /**  
     * @return 所有的企业信息。  
     * 查询所有的企业信息。  
     */ 
    @SuppressWarnings("unchecked")  
    public List<Enterprise> findAllEnterprises() {  
        String hql = "from Enterprise enterprise";  
        return this.getHibernateTemplate().find(hql);  
    }  
    /**  
     * @param Integer,企业编号。  
     * @return 某个企业信息。  
     * 通过企业编号查询企业信息。  
     */ 
    public Enterprise findEnterpriseById(Integer id) {  
        return (Enterprise) this.getHibernateTemplate().load(Enterprise.class, id);  
    }  
    /**  
     * @param Enterprise  
     * 添加企业信息。  
     */ 
    public void save(Enterprise enterprise) {  
        this.getHibernateTemplate().save(enterprise);  
    }  
    /**  
     * @param Enterprise  
     * 修改企业信息。  
     */ 
    public void update(Enterprise enterprise) {  
        this.getHibernateTemplate().update(enterprise);  
    }  
}



基于HibernateDaoSupport的三个分页控制方法
package com.lbx.chat.paging;  
  
import java.sql.SQLException;  
import java.util.List;  
  
import org.hibernate.HibernateException;  
import org.hibernate.Query;  
import org.hibernate.Session;  
import org.springframework.orm.hibernate3.HibernateCallback;  
import org.springframework.orm.hibernate3.HibernateTemplate;  
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  
/** 
 * 基于HibernateDaoSupport的三个分页控制方法 
 * @author Administrator 
 * 
 */  
public class PageDaoHibernateDaoSupport extends HibernateDaoSupport {  
  
    /** 
     * 使用HQL语句进行分页查询操作 
     * offset 第一条记录的索引 
     * pageSize 每页需要显示的记录数 
     * @return 当前页的所有记录 
     */  
    public List findByPage(final String hql, final int offset, final int pageSize){  
        List list = getHibernateTemplate().executeFind(new HibernateCallback() {  
              
            public Object doInHibernate(Session session) throws HibernateException,  
                    SQLException {  
                List result = session.createQuery(hql).setFirstResult(offset)  
                                .setMaxResults(pageSize)  
                                .list();  
                return result;  
            }  
        });  
        return list;  
    }  
      
    /** 
     * 使用HQL语句进行分页查询操作 
     * value 如果HQL有一个参数需要传人,则value就是传人的参数 
     * offset 第一条记录的索引 
     * pageSize 每页需要显示的记录数 
     * @return 当前页的所有记录 
     */  
    public List findByPage(final String hql, final Object value,  final int offset, final int pageSize){  
//System.out.println("PageDaoHibernate.findByPage()");  
        List list = getHibernateTemplate().executeFind(new HibernateCallback() {  
              
            public Object doInHibernate(Session session) throws HibernateException,  
                    SQLException {  
                List result = session.createQuery(hql).setFirstResult(offset)  
                                .setParameter(0, value)  
                                .setMaxResults(pageSize)  
                                .list();  
                return result;  
            }  
        });  
        return list;  
    }  
      
    /** 
     * 使用HQL语句进行分页查询操作 
     * values 如果HQL有多个参数需要传人,则values就是传人的参数数组 
     * offset 第一条记录的索引 
     * pageSize 每页需要显示的记录数 
     * @return 当前页的所有记录 
     */  
    public List findByPage(final String hql, final Object[] values,  final int offset, final int pageSize){  
        List list = getHibernateTemplate().executeFind(new HibernateCallback() {  
              
            public Object doInHibernate(Session session) throws HibernateException,  
                    SQLException {  
                Query query = session.createQuery(hql);  
                for (int i = 0; i < values.length; i++) {  
                    query.setParameter(i, values[i]);  
                }  
                List result = query.setFirstResult(offset)  
                                .setMaxResults(pageSize)  
                                .list();  
                return result;  
            }  
        });  
        return list;  
    }  
  
}  

分享到:
评论

相关推荐

    hibernate使用参考文档

    Hibernate 使用参考文档 Hibernate 是一个流行的 Java持久层框架,它提供了一种对象关系映射(Object-Relational Mapping,ORM)机制,用于将 Java 对象与关系数据库之间建立映射关系。本文档旨在指导读者快速从 ...

    hibernate使用的jar包

    2. **javassist.jar**:Hibernate使用Javassist库来动态生成字节码,实现运行时对类的增强,比如添加getter和setter方法,实现序列化等。这对于ORM框架来说是必不可少的,因为我们需要在不修改源代码的情况下,为...

    配置Hibernate使用C3P0连接池

    **配置Hibernate使用C3P0连接池** 在Java Web开发中,数据库连接管理是一个至关重要的环节,有效地管理和控制数据库连接可以提高应用的性能和稳定性。Hibernate作为一款强大的ORM(对象关系映射)框架,提供了与...

    Hibernate使用技巧共2页.pdf.zip

    【标题】"Hibernate使用技巧共2页.pdf.zip" 提供的文档主要聚焦于Hibernate这一流行的Java持久化框架的使用技巧。Hibernate是一个对象关系映射(ORM)工具,它简化了数据库与Java对象之间的交互,使得开发者可以使用...

    hibernate使用中与各种数据库字段类型对应类型训练

    Hibernate使用`java.lang.String`来映射。 4. **日期时间型**:DATE、TIME、TIMESTAMP。Hibernate提供了`java.util.Date`、`java.sql.Time`和`java.sql.Timestamp`来对应。 5. **布尔型**:BOOLEAN在数据库中表示...

    Hibernate使用指南

    Hibernate 使用指南 Hibernate 是一款 ORM 框架(对象关系映射),它对 JDBC(数据库连接技术的简称)进行了轻量级的封装,使得 Java 程序员可以随心所欲的使用面向对象的编程思想来操作数据库。Hibernate 的作用:...

    hibernate连接金仓数据库所需jar包集合lib.7z

    6. 反射增强库:如`asm-*.jar` - Hibernate使用ASM库来处理动态类生成和元数据解析。 配置这些jar包的过程主要包括以下步骤: 1. **添加依赖**:将上述jar包添加到项目的类路径(classpath)中,这通常在Maven或...

    Hibernate完整使用教程

    Hibernate 完整使用教程 Hibernate 是一种流行的开源持久层框架,允许开发者使用面向对象编程语言来访问关系数据库。下面是关于 Hibernate 的详细知识点: Hibernate 介绍 Hibernate 是一个开源的持久层框架,它...

    hibernate使用文档

    hibernate的使用文档

    Hibernate 使用过程

    以下是对Hibernate使用过程的详细解释: 1. **创建数据库表**:在开始使用Hibernate之前,首先需要在数据库中创建对应的表结构。这些表将与Java对象进行映射,以便于数据的存储和检索。 2. **创建Java项目**:在...

    hibernate与mybatis一起使用取长补短

    标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...

    hibernate使用详解

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,而无需直接编写 SQL 语句。以下是 Hibernate 使用的详细解释: 1. **JDBC 基础**:在 Hibernate 中,JDBC(Java ...

    HibernateSessionFactory.java Hibernate使用的整合的工具文件

    Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类

    chris-exception.jar 编译的异常处理jar包结合hibernate使用

    chris-exception.jar 编译的异常处理jar包结合hibernate使用

    hibernate需要的10个jar

    4. **javassist.jar**:Hibernate使用javassist库动态生成字节码,实现对Java类的增强,比如添加getter和setter方法,以便于ORM操作。 5. **antlr-2.7.7.jar**:ANTLR是一个强大的解析器生成器,用于读取、处理、...

    hibernate3 hibernate3

    2. 表映射(Mapping):Hibernate使用XML或注解方式将实体类映射到数据库表。例如,使用@Table注解指定对应的表名,@Column注解定义列属性。 3. 主键(Primary Key):每个实体都应有一个唯一的标识符,通常由@Id...

    JAVA 使用hibernate配置实例

    - 第二级缓存:为了提高性能,可以配置Hibernate使用第二级缓存,如Ehcache。 - JPA支持:Hibernate同时也支持Java Persistence API (JPA),可以通过@PersistenceUnit注解来管理EntityManagerFactory。 通过这个...

Global site tag (gtag.js) - Google Analytics