일의 최소 단위를 트렌젝션이라고 한다. Service를 하는 파일에서 DB에 변형을 주는 행위를 만들 때 @Transactional가 있으면 어떤 일이 일어날까? 트렌잭션을 수행하던도중에 오류가 나면 해당 트렌젝션 자체를 롤백을 해주기 때문에 DB의 무결성에 큰 문제가 생길 일을 막아 줄 수 있다. 그럼 select할때도 @Transactional을 걸어줘야 하는 이유가 뭘까? 영속성 컨텍스트는 sevice가 끝나는 시점에 변경된 오브젝트를 감지를 한다.(감지된다면 db에 자동 flush(더티 체킹)) @Transactional(readOnly =true)를 걸게되면 더티체킹을 하지 않고 읽기 전용 트렌젝션이 된다.