zoukankan      html  css  js  c++  java
  • Java分表

    应用场景:同一数据库中,有一些结构完全相同的表,只是表名不一样,比如日志表。

    分表可能是数据量的考虑,也可能是数据隔离的考虑,比如多租户应用中。

    由于项目使用了Spring Data-JPA(JPA实现是Hibernate),而JPA不仅没有提供动态表名映射,而且大部分JPA实现会pre-compile some queries,所以在JPA技术下做分表非常困难。

    因为分表、分库这类需求与sql语句联系紧密,所以对应的办法是选择jdbc、mybatis、jdbcTemplate这类使用原生sql的技术,Hibernate的方法1、方法2比较麻烦。

    Hibernate中,一个SessionFactory代表着一个特定数据库的特定配置:

    SessionFactory is a global factory responsible for a particular database. If you have several databases, for easier startup you should use several <session-factory> configurations in several configuration files.

    创建SessionFactory时,实体-表名的映射关系也就固定了。多次创建不同的SessionFactory,然后建立不同的实体-表名映射。

     安全问题:

    动态表名意味着字符串拼接,而字符串拼接意味着sql注入

  • 相关阅读:
    csrf跨站请求伪造
    IO 之 InputStream 和 Reader
    javadoc tags
    java this
    递归
    java 文件中 定义一个字符串,它的默认编码是什么?
    合并数组
    << 移位运算
    final static T
    Base64.java 工具类
  • 原文地址:https://www.cnblogs.com/huangyp/p/3623606.html
Copyright © 2011-2022 走看看