通过DAL(Data Access Layer)可以做到在公司范围提供统一的数据库访问方式以降低总体的开发成本避免由于技术人员水平不同而造成的相同功能实现方式,标准,质量不一至;集中优势人员,将相关的功能做深,做好,做稳定,做全面出现技术问题的时候有专门的技术团队及时支持。降低总体的风险。
dexcoder-dal
http://git.oschina.net/selfly/dexcoder-assistant
- 优点:不依赖第三方orm框架如:hibernate、mybatis等。支持读写分离和动态数据源;支持数据分表水平拆分支持友好。
- 缺点:社区不够活跃。框架的效率和质量有待验证。
ctrip dal
https://github.com/ctripcorp/dal
- 优点:支持代码生成和水平扩展。解决常见的伴随业务成长而带来的系统维护困难,开发效率低下,代码风格五花八门,代码质量参差不齐等痛点问题。
- 缺点:支持2种主流数据库Mysql和MS SqlServer。目前不支持oracle。数据库事务也在dal中管理。适合大的团队
- 问题1:https://github.com/ctripcorp/dal/issues/9
- 问题1:https://github.com/ctripcorp/dal/issues/4 (没有与spring框架结合的demo)
fastser-dal(Uncode-DAL)
https://www.oschina.net/p/fastser-dal
http://git.oschina.net/uncode/uncode-dal-all
- 优点:基于mybatis、spring jdbc、hibernate、mongo等ORM框架开发,同时支持基于多数据源的读写分离、主备切换、故障转移,自动恢复、负载均衡、缓存等
- 缺点:该组件只处理所有单表操作,对于连表等复杂操作可以使用原生框架。社区不够活跃
zebra
大众点评开源框架,是在jdbc协议层上开发的数据库访问层中间件)
https://github.com/dianping/zebra
- 优点:大众点评内部使用数据源、DAO以及监控。配置集中管理,动态刷新;支持读写分离、分库分表;丰富的监控信息在CAT上展现
- 缺点:zebra-dao组件基于MyBatis的异步化的DAO组件。需要Mybatis学习成本。比较重量级
MTDDL
美团点评分布式数据访问层中间件
http://tech.meituan.com/mtddl.html
- 优点:待研究
- 缺点:项目在开发过程、未开源
sharding-jdbc
https://www.oschina.net/p/sharding-jdbc
https://github.com/dangdangdotcom/sharding-jdbc/blob/master/README_cn.md
- 优点:轻量级的关系型数据库中间件,提供分库分表、读写分离和柔性事务等功能
- 缺点:理论上可支持任意实现JDBC规范的数据库。目前仅支持MySQL。
Hibernate:
略
MyBatis:
略
Beetlsql:
http://ibeetl.com/guide/#beetlsql
- 优点:开发效率高、可维护性高、支持多种数据库。文档丰富、社区活跃。学习成本低
- 缺点:更多的问题需要在生产环境中发现。
选择
结合自己的团队和项目需求、在特定时期选择参考适合自己的开源框架进行对比、修改完善并使用。