spring - Spring中的“Propagation.NEVER Executes non-transactionally”是什么意思?
问题描述
在下面的代码中,DeviceService类内部createDevice方法中的save操作不会在事务内部执行,请问这个操作不在事务内部执行是什么意思呢?是否可以在没有事务的情况下对数据库执行操作?
package controller;
import model.Device;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import service.DeviceService;
@RestController
public class DeviceController {
@Autowired
private DeviceService deviceService;
@PostMapping("/devices")
@ResponseStatus(HttpStatus.CREATED)
public void createDevice(@RequestBody Device device) {
deviceService.createDevice(device);
}
}
--
package service;
import model.Device;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import repository.DeviceRepository;
@Service
public class DeviceService {
@Autowired
private DeviceRepository deviceRepository;
@Transactional(propagation = Propagation.NEVER)
public void createDevice(Device device) {
deviceRepository.save(device);
}
}
--
package repository;
import model.Device;
import org.springframework.data.jpa.repository.JpaRepository;
public interface DeviceRepository extends JpaRepository<Device, Integer> {
}
--
package model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Device {
@Id
private Integer id;
private String name;
}
编辑
我正在使用 MySQL 数据库。操作成功执行。关于如何在没有交易的情况下执行的任何细节?幕后在做什么?
在事务内部执行操作和不执行事务有什么区别?
解决方案
推荐阅读
- javascript - MDB 视频播放器强制取消静音
- mysql - “on 子句”中的未知列“b.Hostname”
- python-3.x - 使用 generateDS 通过 xsd 生成 XML 请求
- android - sharedUserId 相同的两个应用在安装时清空存储
- graphql - 将深层道具传递给浅层输入
- r - biomod2 没有绘制数据
- react-native - map 不是 react-native 中的函数
- spring - 为什么 model.addAttribute 和 ${} 不匹配,它只显示 . 在网络上?
- r - 尝试使用 actionButton 获取嵌套在随机选项卡中的下一个随机图像
- typescript - 在 TypeScript 中为 Firebase Cloud Function 配置 mailgun