Meituan-Dianping/Zebra

为什么组件的ShardDatabaseMetaData实现是空的

HappyTree2017 opened this issue · 4 comments

在结合hibernate使用该组件的时候,发现开启hibernate的自动生成表功能后,报出空指针异常,具体看下来是因为组件的ShardDatabaseMetaData实现为空,这里是使用错误吗?有解决方案吗?

具体是调用的ShardDatabaseMetaData的哪个方法? 我看一下能否支持

具体是调用的ShardDatabaseMetaData的哪个方法? 我看一下能否支持

public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
你是这个类里面的大部分实现方法好像都是空实现,这个是需要使用者自己去实现吗?想问下咱们这个组件只有结合mybatis使用的最佳实践吗?

1.分库分表场景下ShardDatabaseMetaData这里的方法大部分是"没有准确实现或无需使用"的 所以我们这里一般都是上层框架必须要使用的情况下才会想办法做下支持
2.mtdp内部基本都是mybatis 其他框架目前没有专门去做支持 后面我们会考虑增加

image
还有就是,我发现组件对connection中不支持的方法直接抛出了异常,其中有个方法是getWarnings,这个方法在Hibernate释放连接资源的时候使用到了,而且是在释放资源前调用的,这样导致连接释放失败。。。这个就是很大的问题了,我的资源池设置了100个连接,很快就耗尽了
如果方便的话,加下微信好友(duanmu1210893441),这样交流比较方便