`
Wind_ZhongGang
  • 浏览: 259692 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics