我正在处理的当前应用程序是一个很大的应用程序.该数据库由300个表组成,并且正在增长.目前它是一个桌面应用程序,但我们正在将它移动到网络上.

我们正在使用的技术是Spring(MVC)Hibernate for backend和ZK框架.在数据库中有300个表我最终创建了那么多POJO.使用Spring的DAO模式,这需要项目具有300个DAO对象和300个服务类.

这就是我现在这样做的方式:

POJO:

@Entity

@Table(name="test")

public class Test implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;

private Integer version;

private String m_name;

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

@Column(name="jpa_id")

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

@Version

@Column(name="jpa_version", insertable=false, updatable=false)

public Integer getVersion() {

return version;

}

public void setVersion(Integer version) {

this.version = version;

}

@Column(name="name", length=30)

public String getM_name() {

return m_name;

}

public void setM_name(String m_name) {

this.m_name = m_name;

}

}

DAO对象的接口:

public interface IDao {

public List getAll();

}

为了避免复制/粘贴,我创建了一个将由所有DAO对象扩展的通用DAO类:

@Repository

public class GenericDAO implements IDao {

@Autowired

protected SessionFactory sessionFactory;

protected Class entity;

@SuppressWarnings("unchecked")

public List getAll() {

List result = (List) getSessionFactory().getCurrentSession().createQuery("from " + entity.getName()).list();

return result;

}

public void setSessionFactory(SessionFactory sessionFactory) {

this.sessionFactory = sessionFactory;

}

public void setEntity(Class entity) {

this.entity = entity;

}

}

DAO对象:

@Repository

public class TestDAO extends GenericDAO {

public TestDAO() {

setEntity(Test.class);

}

}

服务界面:

public interface IService {

public List getAll();

}

服务实施:

@Service

public class TestService implements IService {

@Autowired

private IDao testDAO;

@Transactional(readOnly=true)

public List getAll() {

return testDAO.getAll();

}

public void setTestDAO(IDao testDAO) {

this.testDAO = testDAO;

}

}

我有两个问题:

>如何编写像上面的GenericDAO类这样的通用服务来避免c / p?

>如果你看看DAO实现,那么唯一的东西就是构造函数.有没有办法让“one”DAO类处理所有POJO和一个处理所有/一个DAO对象的Service类?

java 数据包含_java – 包含大量数据库表的通用实现相关推荐

  1. java 数据库排序_Java如何排序数据库表的数据内容?

    在Java编程中,如何排序数据库表的数据内容?假定数据库名称是:testdb,其中有一个表:employee,这个表中有4条记录. 创建数据库表的语句 - use testdb; create tab ...

  2. 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...

    小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...

  3. 数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询

    Mybatis之数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询 外部数据 当前项目表格数据(表名:service_info) 将外部数据转为Table表格,与servi ...

  4. java mysql插入数据乱码_java向mysql数据库插入数据显示乱码的问题

    在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码"???"的问题.针对该问题的主要解决办法就是: 一.确保是否添加了字符集过滤器: 在java web ...

  5. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  6. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)

    一.PO persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...

  7. java联接pg库_Java14:使用Java 14的新记录联接数据库表

    java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...

  8. Java14:使用Java 14的新记录联接数据库表

    您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将从如何设置您的项目开 ...

  9. python提取数据库数据_Python如何读取MySQL数据库表数据

    本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...

  10. ogg初始化mysql数据_利用OGG进行数据库表的初始化

    利用OGG进行数据库表的初始化 前提是已经搭建好了OGG的运行环境和OGG程序的安装部署!!! 若不知道如何安装OGG请查阅博客中相关安装部署文档. 1.停止目标端replicat进程re1 2.配置 ...

最新文章

  1. 使用cloudera manager安装Hive服务【详细步骤】
  2. 关于如何参与到开源项目中《How To Succeed In Open Source ( In Ways You Haven't Considered Yet )》...
  3. 《信息安全系统设计基础》 第五周学习总结
  4. C++ 类的行为 | 行为像值的类、行为像指针的类、swap函数处理自赋值
  5. EBS功能安全性基本原理
  6. Linux Redhat下安装Jenkins
  7. windows上查看和设置weblogic的编码格式
  8. 强化简书社交属性,淡化官腔官调
  9. Collectors.averagingDouble()
  10. matlab基础与应用教程 王月明,MATLAB基础与应用教程
  11. 设计模式 - 抽象工厂模式案例
  12. AutoCAD DWG 读模块参数:处理块
  13. Java阿拉伯数字转换为中文大写
  14. 项目管理知识体系指南 PMBOK(第6版)十大知识领域思维导图(总览图)
  15. 华为od77 python最大消费金额
  16. php 验证手机号邮箱,PHP正则验证真实姓名、手机号码、邮箱
  17. python编程控制机器人_基于Python开发的微信图灵机器人
  18. laravel 隐藏 x-powered-by
  19. 微信小程序制作看图工具
  20. AcWing春季每日一题 Week1

热门文章

  1. tensorflow之variables_to_restore
  2. 判断显卡好坏的步骤、新买显卡装机后不亮解决
  3. linux方舟部落日志显示攻击者,r7800日志显示被攻击
  4. jvm 堆外内存_一图解千愁,jvm内存从来没有这么简单过!
  5. android shape 按钮背景_Android UI:XML文件配置按钮等背景方案
  6. python圆柱体积代码_python实现Bencode解码方法
  7. 安装mysql查看随机密码命令_deepin安装MySQL没有弹出设置root密码怎么进行修改
  8. 喀什师范学计算机学院学位论文开题报告,喀什师范学院本科生毕业论文开题报告.doc...
  9. java adf是什么_在ArcIMS9.2中使用JAVA ADF实现图层要素的查询
  10. python输入一个字符串、计算其中小写字符的个数_编写程序,输入一个字符串,统计其中大小写字母数字和其他符号的个数并输出,要求统计过程在函数COUNT中进行...