框架底层直接用控制器调用dao的笔记

公司框架操作数据库用到三个核心类,BaseDao、HibernateBaseDao、JdbcBaseDao,实际在用到和数据库打交道时,都是由控制器到服务层再到持久层,spring配置事务传播作用在服务层,如果直接在控制器调用持久层的话,经过测试这3个核心类,发现BaseDao 不保存到数据库且不报错,HibernateBaseDao不保存到数据库且报错提示只读不可写,JdbcBaseDao可正常保存到数据库,以下是测试的样例代码!

public void saveLog(){
		BaseDao baseDao = AppliactionContextHelper.getBean(BaseDao.class);
		RoleDao roleDao = AppliactionContextHelper.getBean(RoleDao.class);
		JdbcBaseDao jdbcBaseDao = AppliactionContextHelper.getBean(JdbcBaseDao.class);
		BaseLog baseLog = null;
		try {
			baseLog = SystemUtil.getBaseLog(LogType.LEVEL_INFO, LogType.SYSTEM_LOG, "baseDao>测试日志保存内容", "127.0.0.1");
			baseDao.save(baseLog);
		} catch (Exception e) {
			log.error("baseDao>测试日志保存内容异常",e);
		}
		try {
			baseLog.setLogDesc("roleDao>测试日志保存内容");
			roleDao.getHibernateTemplate().save(baseLog);
		} catch (Exception e) {
			log.error("roleDao>测试日志保存内容异常",e);
		}
		try {
			baseLog.setLogDesc("jdbcBaseDao>测试更新");
			jdbcBaseDao.updateOrDeleteDataForSql("update base_user set user_name='系统管理员' where user_id = 1");
		} catch (Exception e) {
			log.error("jdbcBaseDao>测试更新异常",e);
		}
	}

相关推荐