`
hiyoku
  • 浏览: 31384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate拦截器实现自定义分表策略

 
阅读更多
使用hibernate的拦截器。当用户操作数据库时,会把生成的sql先给Interceptor处理一下,然后再去执行。这正给了我修改sql的机会。

    public class QueryResInterceptor extends EmptyInterceptor {  
              ...  
               
             public QueryResInterceptor(Date startTime, Date endTime){  
              ...  
             }   
        public String onPrepareStatement(String sql) {  
            //根据用户的时间替换sql中的表名  
            return sql;  
        }  
    }  


这个拦截器,接收用户的查询时间做为构造参数。然后做为替换sql中表名的依据。

当我执行一个查询的hql时,hql是按映射的持久化类写的。用如下代码获得Session

    QueryResInterceptor  i=new QueryResInterceptor(...);  
    Session sessoin=sessionFactory.openSession(i);  

这样再通过这个session执行hql时,表名就自动换成需要的实际表名了。
分享到:
评论

相关推荐

    hibernate动态分表

    在Hibernate中,可以通过自定义拦截器或者实体类的注解来实现Sharding。例如,我们可以为实体类添加一个属性表示分片键,并在保存或查询时根据该键决定数据应存储或读取的表。 2. Partitioning策略:Partitioning是...

    hibernate-分表插件实现思路

    Hibernate的事件监听器或拦截器可以用来在执行SQL之前对其进行修改。 4. **事务管理**:在分表环境下,跨表的操作可能涉及到分布式事务。Spring的事务管理可以帮助我们在这种复杂环境中保持事务的一致性。 5. **...

    精选_基于SSH和MySQL实现的人力资源管理系统_源码打包

    通过Struts2的拦截器机制,可以实现登录验证、日志记录等功能。 2. **Spring**:管理Bean的生命周期,实现依赖注入,同时提供事务管理,保证数据一致性。此外,Spring还可以整合其他服务,如邮件发送、任务调度等。...

    java工作总结

    ### 三、拦截器与过滤器 1. **拦截器** - 在执行Action之前进行过滤,可以编写特定的逻辑。 - 配置在`web.xml`或`struts.xml`中。 2. **过滤器** - 对特定URL后缀的请求进行过滤,例如`.html`或`.action`。 ##...

    36道面试常问的MyBatis面试题!.zip

    MyBatis允许自定义拦截器,可以拦截SqlSession、Executor、ParameterHandler、ResultSetHandler和StatementHandler的方法调用,实现自定义功能,如性能监控、日志记录等。 13. **MyBatis支持什么事务管理方式?** ...

Global site tag (gtag.js) - Google Analytics