骚扰一下波总 想咨询下jfinal怎么处理postgres下的多schema场景?

发布于 2021-11-30 17:18:53 字数 242 浏览 794 评论 3

@JFinal 你好,想跟你请教个问题:

jfinal已更新了2.0,看代码发现druidPlugin里好像没有对schema的部分进行处理.

由于我们的原始数据库由于是多schema的,因此很难切换到这个框架下面,不知道有没有什么好的解决方案?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瀞厅☆埖开 2021-12-01 03:03:42

activeRecord和druidPlugin封装的太密了  所以手工改造不太好改 直接reload源码又感觉破坏了项目结构,也不太合适,所以我换了个方式,终于把问题解决了.这里给大家总结一下,方便后来人:

1).对于多schema的数据库产品,可以采用sql标准中的schema.table方式来直接访问处理.那么要做就是将表名转换成schema+表名的格式.这种方式只需要修改对应产品的方言类就可以解决.pg对应的方言类需要做些小改动才能复合格式(去掉引号之类)

2).需要切换schema的场景需要连接池先保持连接,然后从连接池里获取到对应的conn,直接通过各个数据库产品提供的jdbc驱动接口来完成conn的schema切换就可以,不要再指望连接池了。。当时细想了一下,连接池主要的工作是"数据源管理和池管理",数据源这里基本是固定的(多schema一般都是多租户场景),池管理这里,由于连接池组件往往需要兼容大多数数据库产品,在这个层级做schema特性适配,必然和方言的处理差不多,每个产品都有各自的特点,所以还是不做指望的好,直接通过连接做schema修改把,也算聊胜于无。。

实验了不少场景,只有这两个方案算是最有效的,应该可以解决大部分问题了,有碰到相同问题的小伙伴可以参考下.

飘过的浮云 2021-12-01 02:48:00

你的意思是使用schema构造指定的连接池,再用这些连接池来构造activeRecord,druidPlugin里有填写指定schema的地方吗?我怎么没有找到

成熟的代价 2021-12-01 01:52:04

    将多 schema 当成多数据源处理就好,不同的数据源配置不同的用户名和密码,这些多数据源的用户会看到属于自己的 schema,jfinal 多数据源用法见 jfinal 手册,在此下载: http://www.jfinal.com

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文