Hibernate实现分表

来源:互联网 发布:在淘宝怎么货到付款啊 编辑:程序博客网 时间:2024/06/03 21:27
由于单表数据量庞大,在查询时会很慢,所以我们先分表,再在每个表单独加索引会提高很大的效率。
下面直接上代码:
    public class QueryResInterceptor extends EmptyInterceptor{         private String oldName;        private String newName;          public QueryResInterceptor(String oldName,String newName){            this.oldName = oldName;            this.newName = newName;        }          //重写该方法,hibernate是封装了jdbc的,但他底层还是通过sql来操作的。        public String onPrepareStatement(String sql) {           sql = sql.replace(oldName,newName);           return sql;        }    }


利用这个Hibernate拦截器每次操作数据库都会在底层切换表名
那么我们在Dao层应该这么写:
    public void saveUser(String oldName,String newName,User user){        QueryResInterceptor interceptor = newQueryResInterceptor(oldName,newName);        Session session = super.getHibernateTemplate().getSessionFactory().openSession(interceptor);        try {            session.save(user);        } catch (HibernateException e) {            e.printStackTrace();        }finally{            session.close();        }    }


0 0