您的位置:首页 > 其它

Hibernate实现分表

2014-07-03 11:24 316 查看
由于单表数据量庞大,在查询时会很慢,所以我们先分表,再在每个表单独加索引会提高很大的效率。

下面直接上代码:
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息