前面已经讲解了JPA操作数据库的开发使用包括自定义数据库操作的相关设计,具体的链接看下面:
现在我们讲解开发中使用最广泛的事务:
原理很简单就是防止出现操作异常情况下,对数据库的数据造成影响(一般情况,是针对插入和更新)。
SpringBoot提供了非常简单的注解方式帮我们解决事务问题:
我们测试时候采用password的字段长度为1,这样我们在模拟测试的时候只需要添加的字段长度大于就可以了。
//配置JPA映射关系
@Entity //告诉JPA这是一个实体类
@Table(name = "Table_user") //指定和具体哪个表对应 ,也可以默认@Table就是首字母小写
public class User {
@Id
private String name;
@Column(name = "password" ,length = 1)
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
上面是针对实体类的创建,下面是针对我们的Controller类进行相关的操作(使用具体就是 @Transactional注解)。
当出现异常的时候我们开发中需要添加异常处理机制,这里就不做具体说明了。
//<editor-fold desc="2. JPA方式进行更新或者插入数据添加了事务的处理">
@Transactional
@GetMapping("/user")
public User insertEmp(User user) {
User user1 = userRepository.save(user);//可以更新也可以插入,会自动进行判断。
User user2 = new User();
user2.setName("Tom");
user2.setPassword("1");
User user3 = new User();
user3.setName("Tom2");
user3.setPassword("123");
userRepository.save(user2);
userRepository.save(user3);
return user1;
}
//</editor-fold>