目前在项目中,有一张表是统计日志的,表名为AccessLog.
但是由于AccessLog的记录数每天都会很多,长久下去,老存在一张表中不是办法。
所以,我希望利用Hibernate能够实现动态表名的映射,比如现在是09年12月,那么在动态建立表的时候,自动将数据表取名为AccessLog200912,同理,到了明年一月的时候,则又能自动创建AccessLog201001这样的表,也就是以YYYYMM做为AccessLog表的后缀,这样就能把每个月的日志分开了,减少数据库表的负载!
请问大家有弄过吗?弄过的还望指点指点,不胜感激!!!

解决方案 »

  1.   

    多少数据量,什么数据库?建议使用表分区如果要分表的话,应使用原生 SQL 语句,具体的表可以手工多创建一些,或者由数据库的计划任务中使用存储过程去创建。
      

  2.   

    火龙果大哥,现在我已经完成动态表的映射工作(方法是使用了Hibernate的名称策略类)。
    现在的问题只是希望查询的时候方便些
    因为原来只有一张日志表的时候,在使用子查询时,外键连接了用户表,但至少使用子查询或视图时日志表名都是明确的。但为了减少存储量,已经按月来存储,即每个月的日志表的名称都有一个YYYYMM的后缀。这样一来,感觉把查询工作难度加大了。请问有什么好方法解决这类问题?
      

  3.   

    利用Hibernate能够实现动态表名的映射?
    这个当然实现不了,想想都知道,即使动态的生成映射文件,那怎么编译,还有动态的po加载也是一个问题。
      

  4.   

    查询的时候 嵌入JDBC 吧。
      

  5.   

     可不可以才查的时候,添加字符串的方法。
      将表名改成你的要求(反正Hibernate也支持SQL语句的)
      没试过
      

  6.   

    我现在一直在使用动态表,你可以用一个固定的字串如表名 tbl_log_SITE 到时用一个值去替换 SITE就可以了
      

  7.   

    http://jiake.javaeye.com/blog/430557
    他这个比较详细 在基于相同字段表明不同的情况下 可以通过createSQLQuery来完成查询操作至于效率 应该跟普通查询没什么区别 因为你看了他怎么实现的就明白了。。