• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

왜 Transactional을 service에 두나요

20.09.28 23:18 작성 조회수 305

2

영한 쌤!!!

@Transactional을 Service에 말고 Repository에 달면 안되나요?

그리고 @Transactional 은 Test 폴더 안에서만 rollback을 시키는건가요? 아니면 SpringBootTest 어노테이션 안에서만 rollback 이 되는건가요?

답변 5

·

답변을 작성해보세요.

3

안녕하세요. 윽이럴뚜가님! 좋은 질문입니다.

@Transactional은 아무곳에나 다 달아도 됩니다^^ 그런데 아무래도 롤백을 생각하면, 비즈니스 로직이 있는 곳에서 트랜잭션을 시작하는 것이 좋겠지요?

@Transactional이 스프링과 함께 테스트가 동작할 때는 모두 롤백이 됩니다^^ 테스트의 결과를 계속 DB에 저장하면 문제가 되니까요.

감사합니다^^

1

와 답변이 정말 빠르십니다.!!

됐습니다!!! 하이버네이트 버전문제로군여

역시 쌤 오지십니다. 추석연휴 건강하게 보내십시오

0

네 윽이럴뚜가님도 즐거운 명절 되세요^^!

0

메뉴얼 앞쪽에 보시면 다음 내용이 있습니다^^

이렇게 하면 테이블을 잘 삭제해줍니다

ext["h2.version"] = "1.4.200" //h2 데이터베이스 버전 지정

ext["hibernate.version"] = "5.4.20.Final" //하이버네이트 버전 지정

혹시 없으면 v1.9 메뉴얼을 다시 받아주세요^^

0

썜. 제가 지금 Table이 안없어지고 에러가 뜨는거 같은데요.(외래키 걸려서 뭔가 테이블 삭제가 안되고있는것 같음)

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "ITEM" because "FKIJA6HJJIIT8DPRNMVTVGDP6RU" depends on it; SQL statement:

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "MEMBER" because "FKPKTXWHJ3X9M4GTH5FF6BKQGEB" depends on it; SQL statement:

대충 이런에러가 뜨네요. 테이블 제거 순서가 막무가내인지 외래키가 삭제 도중 걸려서 중간에 막히네요.

혹시 cascade 테이블 삭제 이런것 없나요?ㅠㅠ 찾기가 힘드네요. 기본편에서 알려주신거같은데 미치겠네요.

그대로 따라했는데 빼먹은거 같네요 제가