@startuml

participant MovieService
participant MovieDAO
participant EntityManager
participant EntityTransaction

activate MovieService
	MovieService -> MovieDAO : getMovie
	activate MovieDAO
		MovieDAO -> MovieDAO : getEntityManager
		activate MovieDAO
			MovieDAO --> MovieDAO
		deactivate MovieDAO
		MovieDAO -> EntityManager : find
		activate EntityManager
			EntityManager --> MovieDAO
		deactivate EntityManager
		MovieDAO -> EntityManager : detach
		activate EntityManager
			EntityManager --> MovieDAO
		deactivate EntityManager
		MovieDAO --> MovieService
	deactivate MovieDAO
	MovieService -> MovieDAO : saveMovie
	activate MovieDAO
		MovieDAO -> MovieDAO : getEntityManager
		activate MovieDAO
			MovieDAO --> MovieDAO
		deactivate MovieDAO
		MovieDAO -> EntityManager : getTransaction
		activate EntityManager
			EntityManager --> MovieDAO
		deactivate EntityManager
		MovieDAO -> EntityTransaction : begin
		activate EntityTransaction
			EntityTransaction --> MovieDAO
		deactivate EntityTransaction
		MovieDAO -> EntityManager : persist
		activate EntityManager
			EntityManager --> MovieDAO
		deactivate EntityManager
		MovieDAO -> EntityManager : getTransaction
		activate EntityManager
			EntityManager --> MovieDAO
		deactivate EntityManager
		MovieDAO -> EntityTransaction : commit
		activate EntityTransaction
			EntityTransaction --> MovieDAO
		deactivate EntityTransaction
		MovieDAO --> MovieService
	deactivate MovieDAO
deactivate MovieService

@enduml

