Когда нам следует использовать аннотацию @Transactional? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Когда нам следует использовать аннотацию @Transactional?

Сообщение Anonymous »

Я хотел знать, когда нам следует использовать @Transactional в Spring Boot Services.
Поскольку метод save() JpaRepository помечен @Tranasactional code> необходимо ли мне добавлять эту аннотацию в мой метод службы?
Я видел пару статей, в которых говорилось, что если внутри вашего метода службы используется только репозиторий ( как в приведенном ниже сценарии), то нет необходимости помещать @Transactional в метод службы, поскольку save() уже помечено @Transactional. Это правда?
class EmployeeService {
@Autowired
EmployeeRepository repo;

@Transactional //(Is it required here?)
public void saveEmployee(Employee employee) {
repo.save(employee)
}
}

Следует ли использовать его в приведенном ниже случае в методе getStudentsWithNameStartsWithAndGradeLessThan(), поскольку мы используем более одного репозитория?
@Getter
@Setter
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "name")
private String name;

@Column(name = "average_grade")
private Short averageGrade;
}

public interface StudentRepository extends JpaRepository {
Set findByAverageGradeLessThan(Short averageGrade);
Set findByNameStartsWithIgnoreCase(String name);
}

@Service
public class StudentService {

private final StudentRepository studentRepository;

public StudentService(StudentRepository studentRepository) {
this.studentRepository = studentRepository;
}

@Transactional //(Is it required here?)
public Set getStudentsWithNameStartsWithAndGradeLessThan(String prefix, Short averageGrade) {

Set students = studentRepository.findByNameStartsWithIgnoreCase(prefix);
students.retainAll(studentRepository.findByAverageGradeLessThan(averageGrade));
return students;

}
}


Подробнее здесь: https://stackoverflow.com/questions/781 ... annotation

Вернуться в «JAVA»