`
Wind_ZhongGang
  • 浏览: 264103 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

基于DomainObject的通用数据库CRUD操作

阅读更多

  对于项目中的持久化实体,持久化实体虽然对应着不同的业务对象,拥有不同的属性,在数据库中有不同的数据表与其对应,但是这些不同的持久化实体间却存在着一些共性,如它们都需要id主键标识数据表中的某一条记录,都有可能需要对其进行增删改查的操作,于是,将其共性提取出来进行封装,对于提高代码的可重用性和可读性,显得十分迫切以及必要。

 

  一。DomainObject

 

package com.dream.model.couple;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 10/17/11
 * Time: 1:05 PM
 */
public class DomainObject {
    private Integer id;
    private Integer version;
}

 

  id是主键标识,version则可以作为乐观锁控制数据的正确性以及一致性,当然也可以在些添加其它一些项目必要的属性,根据不同的项目需求有所不同,如添加一个全局统一标识符,用以标识全局中的唯一一条数据。

 

  二。DomainDao

 

package com.dream.dao.standard;

import com.dream.model.couple.DomainObject;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 10/17/11
 * Time: 1:10 PM
 */
public interface DomainDao {

    void saveOrUpdate(DomainObject domainObject);

    DomainObject findById(Class clazz, Integer id);

    void delete(DomainObject domainObject);

    List<DomainObject> findAll(Class clazz);
}

 

  三。DomainDaoImpl

 

package com.dream.dao;

import com.dream.dao.standard.DomainDao;
import com.dream.model.couple.DomainObject;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 10/17/11
 * Time: 1:12 PM
 */
public class DomainDaoImpl extends HibernateDaoSupport implements DomainDao {

    @Override
    public void saveOrUpdate(DomainObject domainObject) {
        getHibernateTemplate().saveOrUpdate(domainObject);
    }

    @Override
    public DomainObject findById(Class clazz,Integer id) {
        return (DomainObject) getHibernateTemplate().get(clazz.getName(), id);
    }

    @Override
    public void delete(DomainObject domainObject) {
        getHibernateTemplate().delete(domainObject);
    }

    @Override
    public List<DomainObject> findAll(Class clazz) {
        return getHibernateTemplate().find("from " + clazz.getName());
    }
}

 

  如此一来,当项目中的其它模块需要使用CRUD操作时,只需简单继承DomainDaoImpl类即可,避免重复代码的编写。

1
2
分享到:
评论

相关推荐

    J2EE开发中减少编写代码工作量的几种方法

    通过定义通用的CRUD(Create, Read, Update, Delete)操作,可以减少重复代码的编写,同时提高代码的可读性和可测试性。 #### Struts Action与Domain Object转换 Struts框架中的Action类负责处理请求并返回响应,...

    hibernate学习文档

    通过 Hibernate,开发者可以将 Java 对象映射到数据库表,并执行 CRUD 操作,而无需直接编写 SQL 代码。 #### 为什么选择 Hibernate? - **角色细分**:引入 Hibernate 可以使得开发团队中的角色更为细分,程序员...

    CRM系统开发笔记.pdf

    在数据访问层,我们创建了一个公共接口`ICommenDao`,定义了通用的CRUD操作,如保存(save)方法,适用于所有需要持久化的实体类。接着,创建`CommenDaoImpl`作为接口的实现类,通过Hibernate的API实现这些操作。 ...

    struts2+spring+hibernate

    在本项目中,`domain`包下的实体类(如Equipment)代表数据库中的表,`dao`(Data Access Object)层使用Hibernate的Session接口进行数据库操作,如查询、插入、更新和删除。 **Service层**:服务层是业务逻辑的...

    java术语 it术语

    在数据库领域,CRUD 操作是最基本的数据管理操作。 #### Daemon 守护进程是一种在后台运行的进程,它通常用于执行特定的任务或提供某种服务。在 Java 中,可以创建守护线程,这些线程在主线程结束后会自动终止。 ...

    java专业术语.pdf

    25. CRUD:创建(Create)、读取(Read)、更新(Update)、删除(Delete),是数据库操作的基本功能。 26. Internet Domain Name System(DNS):域名系统,是将域名和IP地址相互映射的分布式数据库系统。 27. ...

    grails 中文第二版

    - 支持基本的CRUD操作。 **领域(Domain)建模** - 领域类是GORM的基础,代表数据库中的实体。 - 支持多种关联方式,如多对一、一对多等。 - 支持组合和继承,增加了模型的灵活性。 - 支持集合、列表和映射等数据...

    IRepository:Dingxin's Repository

    在Java编程中,`IRepository`通常代表“接口仓库”,这是一种设计模式,它定义了对象存储(如数据库)的通用操作接口,使具体的数据库访问细节得以隐藏,提升了代码的可复用性和可测试性。 1. **接口(Interface)*...

    Java专业术语标准化规范表

    CRUD是数据库操作的基本操作,即创建、读取、更新和删除数据记录。 ### Daemon 守护进程是一种在后台运行的进程,通常用于执行长期运行的任务,如日志记录、网络服务等。 ### DAO (Data Access Object) 数据访问...

    HelloGrails:通过使用 Grails 2 开发 TekDays.com 来学习和完善 Grails 技能

    GORM提供了对关系数据库的便捷操作,允许开发者以Groovy语法进行CRUD(创建、读取、更新、删除)操作,减少了与SQL打交道的繁琐。 在创建控制器时,Grails的拦截器(Filters)机制可以帮助我们实现通用的逻辑,如...

Global site tag (gtag.js) - Google Analytics