`
hwpok
  • 浏览: 250715 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate DAO 类

阅读更多
package org.huy.fram.hibernate;

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

import org.hibernate.Query;
import org.hibernate.Session;

/** *//**
 * 
 * <p>
 * Title:[Hibernate Data Access Object Support]
 * </p>
 * <p>
 * Description: [操作数据库支持类,其它DAO可能继承该类]
 * </p>
 * <p>
 * Copyright 2009 Huyvanpull Co., Ltd.
 * </p>
 * <p>
 * All right reserved.
 * </p>
 * 
 * 
@version 1.0
 * 
 * <p>
 * Created by [Huyvanpull] [Jun 26, 2009]
 * </p>
 * <p>
 * Midified by [修改人] [修改时间]
 * </p>
 * 
 
*/

public class HibDAOSupport
{
    
/** *//** DAO的操作po的类型 */
    
private Class<?> claz = null;
    
    
/** *//** 构造方法,且只应提供此种构造方法 */
    
public HibDAOSupport(Class<?> claz)
    
{
        
this.claz = claz;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[加载对象,返回代理实例]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param id
     * 
@return
     
*/

    
public Object load(Serializable id)
    
{
        Object entity 
= null;
        
try
        
{
            Session session 
= HibernateSessionFactory.getSession();
            entity 
= session.load(this.claz, id);
        }

        
catch (RuntimeException re)
        
{
            
throw re;
        }

        
return entity;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[得到对象,返回实体类]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param id
     * 
@return
     
*/

    
public Object get(Serializable id)
    
{
        Object entity 
= null;
        
try
        
{
            Session session 
= HibernateSessionFactory.getSession();
            entity 
= session.get(this.claz, id);
        }

        
catch (RuntimeException re)
        
{
            
throw re;
        }

        
return entity;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[把实例保存到数据库]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param entity
     * 
@return
     
*/

    
public Object save(Object entity)
    
{
        
try
        
{
            
/** *//** 如果entity不是claz的实例,此处会抛出异常,下面代码不会执行 */
            
this.isInstance(entity);
            Session session 
= HibernateSessionFactory.getSession();
            session.save(entity);
            
        }

        
catch (RuntimeException re)
        
{
            
throw re;
        }

        
return entity;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[把实例保存到数据库]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param entity
     * 
@return
     
*/

    
public Object update(Object entity)
    
{
        
try
        
{
            
/** *//** 如果entity不是claz的实例,此处会抛出异常,下面代码不会执行 */
            
this.isInstance(entity);
            Session session 
= HibernateSessionFactory.getSession();
            session.update(entity);
        }

        
catch (RuntimeException re)
        
{
            
throw re;
        }

        
return entity;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[根据实列删除对象]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param object
     * 
@return
     
*/

    
public Object delete(Object entity)
    
{
        
try
        
{
            
/** *//** 如果entity不是claz的实例,此处会抛出异常,下面代码不会执行 */
            
this.isInstance(entity);
            Session session 
= HibernateSessionFactory.getSession();
            session.delete(entity);
        }

        
catch (RuntimeException re)
        
{
            
throw re;
        }

        
return entity;
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[根据id删除对象]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param id
     
*/

    
public void deleteById(Serializable id)
    
{
        delete(load(id));
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[不附加条件查询所有对象]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@return
     
*/

    
public List<?> findAll()
    
{
        String hsql 
= "from ".concat(this.getEntityClassName());
        
return this.find(hsql, 00);
    }

    
    
/** *//**
     * 
     * <p>
     * Description:[根据hsql查询数据]
     * </p>
     * <p>
     * Created by [Huyvanpull] [Jun 30, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param hsql
     * HSQL
     * 
@param beginIndex
     * 查询起始位置
     * 
@param pageSize
     * 每页长度
     * 
@return
     
*/

    
public List<?> find(final String hsql, final int beginIndex,
            
final int pageSize)
    
{
        List
<?> entityLst = null;
        
try
        
{
            Session session 
= HibernateSessionFactory.getSession();
            Query query 
= session.createQuery(hsql);
            
if (beginIndex != 0)
            
{
                query.setFirstResult(beginIndex);
            }
分享到:
评论

相关推荐

    HibernateDao类

    开发HIBERNATE,只要继承...继承的DAO类可一行代码实行增,删,改. 另外也支持查询.分页查询. 在事务方面还不完善. 代码是我自己写的.资源分要使用5点. 但大家可以在下载后点评一下.这样5点的积分就返回了.并多加了一点

    HibernateDao.java

    `HibernateDao.java`是Hibernate框架中一个常见的数据访问对象(DAO,Data Access Object)类,它的主要职责是封装对数据库的操作,提供一套面向对象的接口,使得业务逻辑层可以无需关心底层SQL语句,直接通过对象...

    vc生成hibernate的dao类

    标题中的“vc生成hibernate的dao类”指的是在Visual C++(vc6.0)环境下,利用特定工具或插件来自动化生成基于Hibernate框架的Data Access Object(DAO)类。DAO模式是软件设计中常用的一种模式,它将业务逻辑与数据...

    hibernate dao 生成工具

    8. **测试与集成**:生成的DAO类需要进行单元测试,确保其功能正常。然后将这些DAO集成到应用的业务逻辑层,通过调用DAO方法进行数据操作。 9. **优化与扩展**:生成的代码可能需要根据项目需求进行一些定制化修改...

    HibernateDao

    hibernateDao工具类

    HibernateDao 通用

    HibernateDao 是一种基于 Hibernate ORM(对象关系映射)框架的通用数据访问对象,它简化了对数据库的操作,提供了更高级别的抽象,使开发者能够更加专注于业务逻辑而不是底层的数据操作。在Java开发中,Hibernate...

    使用代理实现Hibernate Dao层自动事务

    本文将深入探讨如何使用代理来实现Hibernate Dao层的自动事务管理,以提高代码的可维护性和事务处理的效率。 首先,理解Dao(Data Access Object)层的作用至关重要。Dao层是应用与数据库之间的一层抽象,它封装了...

    HibernateDAO的写法

    《深入理解HibernateDAO的写法》 在Java企业级开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而HibernateDAO则是基于Hibernate进行数据访问的对象,是业务逻辑层和持久层之间...

    Hibernate封装dao层

    创建一个DAO接口,定义所有需要的方法,然后创建一个实现该接口的类,如`UserDaoImpl`,在这个实现类中使用Hibernate API完成实际的数据库操作。 5. **泛型DAO**: 为了进一步提高代码的复用性,可以使用泛型来...

    Hibernate DAO生成器

    这些DAO类包含了根据Hibernate的配置文件自动创建的CRUD(Create、Read、Update、Delete)方法,使得开发者可以直接调用,简化了代码编写工作,同时减少了潜在的错误。 **三、使用Hibernate DAO生成器的步骤** 1. ...

    Hibernate 原生通用DAO

    **Hibernate原生通用DAO**是基于Hibernate框架设计的一种简化数据访问操作的方式,它模仿了Spring框架中的`HibernateTemplate`类,旨在提供一个简单易用的DAO(Data Access Object)层,方便开发人员进行数据库操作...

    Hibernate_通用DAO模式,一个写好的dao层

    然后,针对每一种具体的数据实体,可以创建一个实现了`BaseDao&lt;T&gt;`接口的DAO类,如`UserDaoImpl`,并在其实现中利用Hibernate Session进行数据库操作。 在实现过程中,通常会使用Spring的`@Repository`注解来标记...

    一个通用的Hibernate DAO

    它强调了该DAO类是通用的,意味着它可以被应用于多种不同的实体类型上,而不需要针对每种实体都编写特定的DAO类。 - **作用**:通过创建一个通用的DAO类,可以减少代码重复,提高代码的可维护性和可扩展性。 #### ...

    使用模式设计及java5新特性在HibernateDAO中的应用

    而"generated-src"可能是编译后生成的源代码,这些代码可能包含了使用Java 5新特性和设计模式实现的DAO类。 结合使用设计模式和Java 5的新特性,可以创建出更高效、更易于理解和维护的Hibernate DAO层。这有助于...

    大家看看我设计的泛型DAO(使用Spring的Anotation和Hibernate)

    首先,`HibernateBaseDao.java`是基础的Hibernate DAO类,它提供了对Hibernate操作的基本封装。这个类通常会包含如打开和关闭Session、事务管理等通用功能。例如,它可能包含以下方法: 1. `getSessionFactory()`:...

    Spring + Hibernate DAO 代码上传

    - **DAO(Data Access Object)模式**:Spring通常结合DAO模式来处理数据访问,DAO接口定义了业务逻辑,而其实现类则利用Hibernate进行数据库操作。 - **事务管理**:Spring的PlatformTransactionManager接口用于...

    spring+hibernate DAO生成工具

    这是一个DAO代码生成工具,只需要配置好数据库连接信息,和按照你的需求配置要生成到的路径,运行BAT文件就会生成操作数据库的代码,可以完成增加,删除,修改,查询等操作,不需要写SQL语句,生成完全面向对象的代码....

    hibernate spring通用dao

    spring集成hibernate通用dao,泛型,server都可以调用

Global site tag (gtag.js) - Google Analytics