使用Hibernate / Spring / Maven / MySQL测试运行后防止数据被删除,可以采取以下措施:
推荐的腾讯云相关产品:
产品介绍链接地址:
背景事情是这样的,在公司内部新开发了一个功能还没有上线,目前部署在测试环境,Node服务会开启一个定时任务,每5分钟会处理好一部分数据写入到mysql数据库中。...可是在写入后的代码逻辑中是没有执行删除数据的处理,而且每次都是稳定复现,写入后就被删除了,查询无果无奈找到db帮找原因。db查询日志给出的结论就是有定时执行删除的逻辑。...由于此时是使用的 sequelize 的 bulkCreate 批量创建数据,所以开始怀疑是不是这个批量处理的过程中出现了问题,当初是因为每次执行的数据量太多所以没有选择单条执行,这个时候为了排查问题,...,导致写好的数据被另一边执行了删除的逻辑,由于那台服务器一直未更新修改的代码,一直执行的是最开始那份先删除再更新的逻辑。...至于为啥执行了删除但是没有更新,猜想是删除后更新的逻辑出错了。这也是为什么修改了表名称后就正常了,因为那台服务器上面还是旧的代码,新增删除不能读到之前的那张表了,问题到此终于是告一段落了。
目录 一、 使用Maven创建一个Web项目 二、使用MyBatis完成MySQL数据库访问 2.1、添加依赖 2.2、准备数据 2.3、创建java Bean 2.4、创建实例与表的映射文件 2.5、...创建MyBatisCfg.xml文件 2.6、实现数据访问功能 2.7、测试运行 2.8、整合log4j2 三、使用Spring4.X整合MyBatis3.X初级版 3.1、修改pom.xml添加依赖...一、 使用Maven创建一个Web项目 为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一、二点内容多数是回顾过去的内容...二、使用MyBatis完成MySQL数据库访问 2.1、添加依赖 要完成使用MyBatis访问MySQL数据库,需要添加一些依赖包,包含MyBatis3,连接驱动,JUnit,Log4j2等。...4.4.2、C3P0 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
下载后解压到你想要的目录即可,然后设置环境变量: 在cmd模式下查看,出现以下信息证明安装成功: 然后我们可以在在环境变量里配置gradle默认的仓库地址(和maven不太一样): 三、IED中的使用...其中包括complile(编译时)runtime(运行时)testCompile(测试编译时)testRuntime(测试运行时)。...其中mavenLocal()表示使用本地maven仓库;mavenCentral()使用maven中心仓库 。...的版本 ext['hibernate.version'] = '5.2.8.Final' // 使用了 Maven 的中央仓库(你也可以指定其他仓库) repositories { //...compile('org.springframework.boot:spring-boot-starter-data-jpa') // 添加 MySQL连接驱动 的依赖 compile('mysql
Spring Data JPA是Spring基于Spring Data框架对于JPA规范的一套具体实现方案,使用Spring Data JPA可以极大地简化JPA 的写法,几乎可以在不写具体实现的情况下完成对数据库的操作...使用IDE导入项目,我这里使用Eclipse,通过导入Maven项目的方式导入。 ?...hibernate.ddl-auto: update #指定为update,每次启动项目检测表结构有变化的时候会新增字段,表不存在时会新建,如果指定create,则每次启动项目都会清空数据并删除表...Spring Data JPA,可以通过两种方式使用 JPA 进行数据持久化。...最后我们测试一下删除接口delete,删除掉id为1的数据,再次调用findAll接口,我们发现目标记录已经成功被删除。 ?
测试运行 3、spring整合:方式一 1. 引入spring配置文件 2. 使用Spring的数据源替换MyBatis的数据源配置 3....测试运行 mybatis-spring官方文档:http://mybatis.org/spring/zh/index.html 首先新建一个空的maven项目 1、导入相关jar包 1. junit...maven配置文件无法被导出或生效,加入以下代码 <!...使用Spring的数据源替换MyBatis的数据源配置 在spring配置文件中加入以下代码,配置数据源信息 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource
SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库 SpringBoot操作数据库有多种方式,如 JDBC直接操作:太古老了,没人愿意这样玩 Mybatis插件:比较时髦...Spring-data-jpa: 使用hibernate作为实现,基本上不需要写sql,因为sql都是统计的,总是会产生多余的查询,性能上相对而言会低,但不绝对,影响性能的因素是多种的,这里说的性能是...spring.jpa.hibernate.ddl-auto属性,是对表的操作: create 启动时删数据库中的表,然后创建,退出时不删除数据表 create-drop 启动时删数据库中的表,然后创建...,退出时删除数据表 如果表不存在报错 update 如果启动时表格式不一致则更新表,原有数据保留 validate 项目启动表结构进行校验 如果不一致则报错 none 啥都不做 spring.jpa.hibernate.naming.implicit-strategy...实体名称映射到数据库中时,分成两个步骤: 第一个阶段是从对象模型中提取一个合适的逻辑名称,这个逻辑名称可以由用户指定,通过@Column和@Table等注解完成,也可以通过被Hibernate的ImplicitNamingStrategy
这里介绍Spring Boot结合JPA,MySQL和Ehcache实现缓存功能,提高程序访问效率。 一、Maven依赖 主要依赖如下所示: <?...,Ehcache依赖还有数据库JPA和MySQL的依赖。...: dialect: org.hibernate.dialect.MySQL5Dialect server: port: 8080 --- spring: profiles:...当对象自从最近一次被访问后, 如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。...,删除缓存,直接删除数据库数据,ID为:" + id); userRepository.delete(id); return "删除成功"; } } 注意: 1
封装了经常使用的组件,比如MyBatis, Hibernate, MongoDB等。 纯Java的配置,简单方便。 配置Maven等构建工具后,java -jar进行部署比较简单。...配置数据连接配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql:/...update: 如果数据库中有这个表且有数据,那么我会保留这张表,不会去删除它。 create-drop: 应用停止的时候, 会把数据库里面这张表删除。 none: 不产生任何行为。...增加,使用POST, 查询使用GET, 更新使用PUT,删除使用DELETE。...隔离性: 可能有许多事务会同时处理相同的数据, 因此每个事务都应该与其他事务隔离开,防止数据被破坏。
maven配置文件无法被导出或生效,加入以下代码 <!...测试运行 到此,mybatis程序的创建已成功,接下来将进行修改,整合spring 3、spring整合:方式一 通过SqlSessionTemplate创建SqlSession 接下来将在上述实验环境下进行修改...使用Spring的数据源替换MyBatis的数据源配置 在spring配置文件中加入以下代码,配置数据源信息 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource...<em>测试运行</em> 成功运行!! 所有巧合的是要么是上天注定要么是一个人偷偷的在努力。
maven配置文件无法被导出或生效,加入以下代码 <!...测试运行 ?...使用Spring的数据源替换MyBatis的数据源配置 在spring配置文件中加入以下代码,配置数据源信息 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource...<em>测试运行</em> ? 成功运行!! 所有巧合的是要么是上天注定要么是一个人偷偷的在努力。 结束!
配置 spring: #应用配置 application: #应用名 name: aurora_hibernate #数据源配置 datasource: #驱动...mysql hibernate: #create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,...#create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。...#update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
数据库操作 在这里我重点讲述mysql、spring data jpa的使用,其中mysql 就不用说了大家很熟悉,jpa是利用Hibernate生成各种自动化的sql,如果只是简单的增删改查,基本上不用手写了...=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql...= true 其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构,有四个值: create: 每次加载hibernate时都会删除上一次的生成的表,...update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码。...当然,在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate或者Spring Data JPA,我们这里讲解JdbcTemplate的整合,只是告诉大家有这么一种操作数据库的方式...使用IDE导入项目,我这里使用Eclipse,通过导入Maven项目的方式导入。 ?...创建数据库表 这里使用MySQL数据库,版本是8.0.16,在项目根目录下新建db目录,然后在其中编写一个数据库脚本文件。...另外,如果你使用的是MySQL 5.x及以前版本,驱动配置driverClassName是com.mysql.jdbc.Driver。
也因此,在我们使用的 Spring Data JPA 的项目中,如果想要替换底层使用的 JPA 实现框架,在未使用到相关 JPA 实现框架的特殊特性的情况下,可以透明替换。...-- 本示例,我们使用 MySQL --> mysql mysql-connector-java...create :每次加载 hibernate 时都会删除上一次的生成的表,然后根据你的 model 类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。...create-drop :每次加载 hibernate 时根据 model 类生成表,但是 sessionFactory 一关闭,表就自动删除。...update :最常用的属性,第一次加载 hibernate 时根据 model 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate 时根据 model 类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行
=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=update spring.jpa.properties.hibernate.dialect...=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql= true | 其实这个 hibernate.hbm2ddl.auto...参数的作用主要用于:自动创建 | 更新 | 验证数据库表结构,有四个值: | create: 每次加载 hibernate 时都会删除上一次的生成的表,然后根据你的 model 类再重新来生成新表,...update:最常用的属性,第一次加载 hibernate 时根据 model 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate 时根据 model 类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...validate :每次加载 hibernate 时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
简介 本文来介绍SpringBoot来简单整合缓存,使用SpringBoot+JPA+mysql来进行数据库操作。整合JPA的文章,具体可以参考 传送门。...=root ##数据库驱动 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ##validate 加载hibernate时,验证创建数据库表结构...##create-drop 加载hibernate时创建,退出是删除表结构 ##update 加载hibernate自动更新数据库结构 ##validate...id=1,查看控制台如下,可以到清空缓存后,在访问就需要查询数据库。 ? 4.调用删除方法http://localhost:8888/deleteHouse?...id=1,查看控制台如下,可以到删除缓存后,在访问也查询了数据库。 ? 源码下载 :大老杨码云 个人网站:https://www.dalaoyang.cn
Spring Boot结合JPA操作Mysql数据库十分方便,可以做到零配置文件。具体流程如下。 一、Maven依赖 <?xml version="1.0" encoding="UTF-8"?...Data JPA提供的一个查询规范, 要做复杂的查询,类似hibernate QBC查询 Spring Data JPA的使用十分简单,只需要我们编写DAO接口来继承上述的接口即可,不需要编写这个接口的实现类...但是,使用 CrudRepository 也有副作用,它可能暴露了你不希望暴露给业务层的方法。比如某些接口你只希望提供增加的操作而不希望提供删除的方法。...", "org.hibernate.dialect.MySQL5Dialect"); hibernateProperties.setProperty("hibernate.show_sql...*/ @Before public void init() { // 删除数据库所有数据 userRepository.deleteAll()
前面的一系列文章中,我们总结了三大框架:Struts2,Hibernate,Spring 的基本知识。本篇就姑且尝试着使用 Maven 这个项目构建工具来将这三个框架整合一起。...原先我们是通过 IDE 来完成这样的工作,但是不同的 IDE 有不同的使用操作,但是如果你是 Maven 项目的话,无论你在哪种 IDE 中编码,都可以使用相同的 Maven 命令进行上述的几种操作,这其实在一定程度上减少了我们对...需要说明一点的是,为了简单起见,这里我们并没有使用数据源进行数据库的连接,等到与 Spring 整合的时候会使用数据源配置数据库连接。...上述我们使用整合后的框架做了一个小案例,由于代码量较小还不能体现框架分层处理的优势,但是我们还要对其进行更深层次的解耦。...修改 web.xml 中有关 Spring 配置文件位置的代码: ? 使用通配符告诉容器加载所有类路径下符合指定规则的配置文件,这样我们各个模块中的 Spring 的配置都可以被加载了。
然后,通过 Maven 查看 spring-boot-starter-test 组件的依赖关系,我们可以得到如下所示的组件依赖图: ?...导入 spring-boot-starter-test 依赖后,我们就可以使用它提供的各项功能应对复杂的测试场景了。...执行该测试用例后,从输出的控制台信息中,我们可以看到 Spring Boot 应用程序被正常启动,同时测试用例本身也会给出执行成功的提示。...例如,我们可以通过 @RunWith(SpringJUnit4ClassRunner.class) 让测试运行于 Spring 测试环境。...在测试场景下,一般我们可以使用 H2 作为内存数据库,并通过 MySQL 实现数据持久化,因此我们需要引入以下所示的 Maven 依赖: com.h2database
领取专属 10元无门槛券
手把手带您无忧上云