[转帖]基于DomainObject的通用数据库CRUD操作_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4768 | 回复: 0   主题: [转帖]基于DomainObject的通用数据库CRUD操作        下一篇 
fozhyn
注册用户
等级:上士
经验:317
发帖:101
精华:0
注册:2011-10-18
状态:离线
发送短消息息给fozhyn 加好友    发送短消息息给fozhyn 发消息
发表于: IP:您无权察看 2011-10-19 15:06:16 | [全部帖] [楼主帖] 楼主

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

    一。DomainObject

Java代码   北京联动北方科技有限公司


package com.dream.model.couple;
public class DomainObject {
      private Integer id;
      private Integer version;
}


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

    二。DomainDao

Java代码   北京联动北方科技有限公司


package com.dream.dao.standard;
import com.dream.model.couple.DomainObject;
import java.util.List;
public interface DomainDao {
      void saveOrUpdate(DomainObject domainObject);
      DomainObject findById(Class clazz, Integer id);
      void delete(DomainObject domainObject);
      List<DomainObject> findAll(Class clazz);
}


  三。DomainDaoImpl

Java代码   北京联动北方科技有限公司


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;
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类即可,避免重复代码的编写。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论