使用spring+ibatis时如何在后台进行数据库的备份与还原

备份时如何取得数据库连接?还原时要获得对数据库的排它访问权,这部分怎么实现?另外还原时对其它正在访问数据库用户有什么影响?怎么样解决?请各位大牛指点

这样子啊!这样不好弄,如果你备份数据库 一个方面你可以停止你的web应用,然后直接访问远程数据库进行备份

还有就是 数据库的用户名密码只有2个人有,一个是你自己,一个是的web应用程序,
如果你想限制web应用程序访问数据库 那么你应该在项目 设计阶段 要做好动态的拦截,比如设置一个filter 变量为false 时候所有的访问请求都不经过dao层 直接返回。

“也就是说除了自己,其他人在还原时都要断开与数据库的连接”这个需求,我还没具体遇到过,应为只要 你的web应用是启动的 ,那么所有人都能访问(除非像上面一样,设置一个开关,只允许某些人或者某些权限的人进行访问)

如果有更好的答案,我也想学习学习

你所说的这个备份 是指什么备份??
是指通过程序代码 定时执行备份吗还是备份这个数据库这些都是不一样的。这个好像与spring ibatis 没有关系吧
既然备份后还原 新的东西肯定被覆盖,所以必定产生影响。所以还原只针对于现有数据丢失来操作,否则不应该还原。

如果是用代码进行定时备份 如 使用定时器 quartz 该怎么注入dao还是要怎么注入dao。

[code="java"]
/**

  • @desc 获取spring容器,以访问容器中定义的其他bean
  • 接口 dao = (接口)SpringAppContextHolder.getBean("xxxxxbean");//bean的名称
  • 不要忘记了xml *
  • @author weisd
  • @version create date :2010-11-2 上午09:38:14
    *
    */
    public class SpringAppContextHolder implements ApplicationContextAware{

    // Spring应用上下文环境
    private static ApplicationContext applicationContext;

    /**

    • 实现ApplicationContextAware接口的回调方法,设置上下文环境
    • @param applicationContext */ public void setApplicationContext(ApplicationContext applicationContext) { //Assert.isNull(SpringAppContextHolder.applicationContext,"ApplicationContext alread holden"); SpringAppContextHolder.applicationContext = applicationContext; }

    /**

    • @return ApplicationContext */ public static ApplicationContext getApplicationContext() { Assert.notNull(applicationContext,"SpringAppContextHolder ApplicationContext must be not null!"); return applicationContext; }

    /**

    • 获取对象 这里重写了bean方法,起主要作用
    • @param name
    • @return Object 一个以所给名字注册的bean的实例
    • @throws BeansException */ public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); }

}

[/code]