目前包含orm框架:
打算从几个方面测试各orm框架, 按需求从强到弱(演示这些功能的demo方法见BaseDemo):
是指在SaaS项目中, 一个程序服务多个租户, 数据上要进行隔离. 简单看有三个级别的隔离
调查结论. hibernate和ebean提供的多租户支持, 都是上述1,2,4三种方式, 分表的需求可能很奇怪?
是指虽迭代开发, 数据库的schema要随着版本不断变化, 如何自动管理这种变化, 防止手动打patch出现问题.
在Django/Rails这些框架的ORM中, 由于使用了ActiveRecord的机制, 不用自己维护ddl语句, 直接用"类" 来映射 "数据库表", 这样的话, 升级的时候比较容易追踪, 所以那些框架自己提供了非常easy的db migration功能.
这个工作分为两步, 谁来生成diff的sql, 谁来管理和执行sql更新.
执行更新动作也有多种可能的方式:
手写sql手动打patch很崩的, 我们期待的比较好的方式是:
在开发的时候用工具自动生成diff的sql, 在部署的时候用工具管理sql更新, 启动的时候有validate一下是最好的.
Hibernate中有个hbm2ddl
工具:
hbm2ddl: 随程序启动, 开发的时候用来生成sql, 上线的时候用来validate
不错, 用来执行有点崩, 好像没有版本的概念.
ebean也加了自己的migration工具: 可以生成sql,
独立的三方migration工具有两个, 用于管理和执行sql更新, 他们不能生成diff sql. 见src/main/resources/dbmigrate/
flyway
liquibase
一下总结纯属个人一家之言.
数据库migration工具就选liquibase了.
另外发现一个好玩的项目 querydsl TODO
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。