摘要:Hibernate FilterHibernate Filter过滤特定租户ID的数据,实现共享表级别的数据隔离;提取出Filter的代码,通过AOP方式(Spring集成)作用于特定方法中;Filter只能作用于查询集合,对单个查找(比如通过主键)是不起作用的,因为这是没有意义的。Filter的定义包括两个部分,名字,参数(参数类型的值都是小写字母): Filter的使用声明也包括两个部分,名字,过滤条件:比如:salary > :amountname like :name:asOfDate BETWEEN eff_start_dt and eff_end_dt:参数名是参数,其它是数
阅读全文
摘要:从单数据源转变到多数据源的环境,应用程序面临的其中一个问题是,不同的模块对应不同的数据源,如何透明地使用不同的数据源,达到程序的最小改动。Spring框架提供了自定义数据源路由功能,可以根据规则获取不同的数据源。实现思路:参考Oliver Gierke在stackoverflow上的回复。剽窃一张图片说明一下(原文链接),图片中的DynamicDataSource对应下面配置中的dataSource主要配置: ...
阅读全文
摘要:应用场景:同一数据库中,有一些结构完全相同的表,只是表名不一样,比如日志表。分表可能是数据量的考虑,也可能是数据隔离的考虑,比如多租户应用中。由于项目使用了Spring Data-JPA(JPA实现是Hibernate),而JPA不仅没有提供动态表名映射,而且大部分JPA实现会pre-compile some queries,所以在JPA技术下做分表非常困难。因为分表、分库这类需求与sql语句联系紧密,所以对应的办法是选择jdbc、mybatis、jdbcTemplate这类使用原生sql的技术,Hibernate的方法1、方法2比较麻烦。Hibernate中,一个SessionFactory
阅读全文