diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TrainingPhaseFacade.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TrainingPhaseFacade.java
index 63fbb35ecb775916044fa59f5fdcc62f3941dc4b..e527581d134be522e8d3a177265b228c9879556c 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TrainingPhaseFacade.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TrainingPhaseFacade.java
@@ -15,7 +15,6 @@ import cz.muni.ics.kypo.training.adaptive.service.QuestionnairePhaseService;
 import cz.muni.ics.kypo.training.adaptive.service.TrainingPhaseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -50,7 +49,6 @@ public class TrainingPhaseFacade {
     }
 
 
-    @Transactional
     public List<AbstractPhaseDTO> deletePhase(Long definitionId, Long phaseId) {
 
         phaseService.deletePhase(definitionId, phaseId);
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/PhaseService.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/PhaseService.java
index f757d174183648a12a4fb473360f9b319006a5e3..b4aab2b75c8419820a08fc9a7329b4c09f3e4204 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/PhaseService.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/PhaseService.java
@@ -11,6 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 @Service
+@Transactional
 public class PhaseService {
 
     private final AbstractPhaseRepository abstractPhaseRepository;
@@ -22,7 +23,6 @@ public class PhaseService {
         this.trainingPhaseService = trainingPhaseService;
     }
 
-    @Transactional
     public void deletePhase(Long definitionId, Long phaseId) {
         AbstractPhase phase = abstractPhaseRepository.findById(phaseId)
                 .orElseThrow(() -> new RuntimeException("Phase was not found"));
@@ -37,6 +37,7 @@ public class PhaseService {
         abstractPhaseRepository.delete(phase);
     }
 
+    @Transactional(readOnly = true)
     public AbstractPhaseDTO getPhase(Long definitionId, Long phaseId) {
         AbstractPhase phase = abstractPhaseRepository.findById(phaseId)
                 .orElseThrow(() -> new RuntimeException("Phase was not found"));
@@ -47,14 +48,13 @@ public class PhaseService {
         return BeanMapper.INSTANCE.toDto(phase);
     }
 
-
+    @Transactional(readOnly = true)
     public List<AbstractPhaseDTO> getPhases(Long trainingDefinitionId) {
         List<AbstractPhase> phases = abstractPhaseRepository.findAllByTrainingDefinitionIdOrderByOrder(trainingDefinitionId);
 
         return BeanMapper.INSTANCE.toDtoList(phases);
     }
 
-    @Transactional
     public void movePhaseToSpecifiedOrder(Long phaseIdFrom, int newPosition) {
         AbstractPhase phaseFrom = abstractPhaseRepository.findById(phaseIdFrom)
                 .orElseThrow(() -> new RuntimeException("Phase was not found"));
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TaskService.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TaskService.java
index 3173993e3e21ba205097fa45888f2438dc91c142..ef29146e6fd9249b5927abb8af89e9480928e744 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TaskService.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TaskService.java
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@Transactional
 public class TaskService {
 
     private static final Logger LOG = LoggerFactory.getLogger(TaskService.class);
@@ -71,6 +72,7 @@ public class TaskService {
         return BeanMapper.INSTANCE.toDto(persistedEntity);
     }
 
+    @Transactional(readOnly = true)
     public TaskDTO getTask(Long trainingDefinitionId, Long phaseId, Long taskId) {
         Task task = taskRepository.findById(taskId)
                 .orElseThrow(() -> new RuntimeException("Task was not found"));
@@ -99,7 +101,6 @@ public class TaskService {
         return BeanMapper.INSTANCE.toDto(savedEntity);
     }
 
-    @Transactional
     public void removeTask(Long trainingDefinitionId, Long phaseId, Long taskId) {
         Task task = taskRepository.findById(taskId)
                 .orElseThrow(() -> new RuntimeException("Task was not found"));
@@ -112,7 +113,6 @@ public class TaskService {
         taskRepository.delete(task);
     }
 
-    @Transactional
     public void moveTaskToSpecifiedOrder(Long taskIdFrom, int newPosition) {
         Task task = taskRepository.findById(taskIdFrom)
                 .orElseThrow(() -> new RuntimeException("Task was not found"));
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TrainingPhaseService.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TrainingPhaseService.java
index 7e0a807bde8128771a9e5842343259f1138bfef7..e733b29f6041e8cf2d8912288778a1f0b30fc813 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TrainingPhaseService.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/TrainingPhaseService.java
@@ -11,6 +11,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
@@ -20,6 +21,7 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Service
+@Transactional
 public class TrainingPhaseService {
 
     private static final Logger LOG = LoggerFactory.getLogger(TrainingPhaseService.class);