我正在开发JavaEE应用程序,数据库中有近1000多个表,现在我必须通过客户端的参数查询记录。
通常我会为每个表创建一个实体,并创建Dao,Service来进行查询。
但是我遇到了两个问题:
1表格数
正如我所说的那样,每张表都有超过40列的1000+表,一个接一个地创建实体将是一场噩梦。
2方案更新
即使我可以通过程序创建实体,数据的架构可能会在某些时候发生变化,这是我无法控制的。
在我的应用程序中,只有读取操作与这些类型的数据相关,不需要更新,删除,创建。
所以我想知道以下解决方案是否可行:
1使用地图代替POJO
根本不要创建POJO,使用本机Map来包装列和值。
2行映射
使用Hibernate或Spring JdbcTemplate或其他方法查询时,使用映射器将每一行映射到地图中的条目。
如果是,我会使用ResultMetaData
来检测列名,类型,值:
ResultMetaData rmd=rs.getMetaData();
for(int i=0;i<rmd.getColumnCount();i++){
Type t=rmd.getType(i)
if(t==....){
...
}else if(t=...){
...
}
}
看起来像是JPA工作的一部分,任何图书馆都可以在这里使用?
如果没有,还有其他选择吗?