В приведенном ниже коде операция сохранения в методе createDevice внутри класса DeviceService не будет выполняться внутри транзакции, что означает, что эта операция не выполняется внутри транзакции? Можно ли выполнить операцию над базой данных без транзакции?
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;
}
Редактировать I использую MySQL базу данных. Операция выполнена успешно. Любые детали о том, как это выполняется без транзакции? Что делается в сцене?
В чем разница между выполнением операции внутри транзакции и без транзакции?