@Transactional 사용
496
작성한 질문수 6
ㅎㅎ 또 질문이 있습니다~
강의와는 달리 @AfterEach 에서 매번 삭제하지 않고
트랜젝션을 사용하려고 합니다.
@Transactional 을 사용하려는데
@SpringBootTest
@Transactional
open class UserServiceTest @Autowired constructor(
// constructor 에 @Autowired 를 붙이면 파라미터에 일일이 @Autowired 붙이는 걸 생략 가능!
private val userRepository: UserRepository,
private val userService: UserService,
) {요렇게 class 앞에 open 을 붙여야 한다고 인텔리제이가 경고해 주는데요... 혹시 이게 무엇인지 궁금합니다!
답변 3
1
강의 보다가 Transactional 관련해서 질문이 있습니다.
만약 A객체가 B객체를 oneToMany관계(lazy loading)로 가지고 있을 때
테스트 코드에서 A 엔티티를 불러오고 B객체에 접근을 하게 되면 영속성 컨텍스트가 종료 되어 버려서 지연로딩 객체를 초기화 할 수 없게 되는데 이때 이 문제를 어떻게 해결할 수 있나요?
테스트를 다른 방법으로 짜야하는지 아니면 그냥 코드를 테스트 가능한 코드로 짜지 않은건지 태현님 의견이 궁금합니다!
1
안녕하세요, 차가운물님!! 좋은 질문 올려주셔서 감사드립니다 😊
이 부분은 제가 <테스트 코드와 트랜잭션>이라는 주제의 영상으로 제작해 말씀드리고 싶어 조금만 시간을 양해해주시면 감사드리겠습니다 ㅎㅎㅎ
늦어도 이번 주말까지는 강의 내용에 추가하여 메일로 공유드릴 수 있도록 하겠습니다. 감사합니다! 🙏
0
안녕하세요!! 승원님!! 아이고~~ 너무 좋은 질문이십니다 ㅎㅎㅎㅎ
@Transactional 어노테이션을 사용하면, 스프링 AOP에 의해 프록시 객체를 만들게 되는데요 이때 프록시 객체를 정상적으로 활용하기 위해서는 클래스가 상속 가능해야 합니다!!
하지만 코틀린에서는 기본적으로 모든 클래스가 상속이 불가능하기 때문에 open 이라는 키워드를 사용해 명시적으로 클래스를 상속 가능하게 열어주어야 하는 것이죠!
더 궁금하신 내용 있으시면 편하게 질문 부탁드립니다!! 🙏🙏
감사합니다!!!
안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?
0
67
2
실행이 안되네요
0
65
2
프론트 영역 보는법
0
51
2
companion object
0
75
2
Custom 레프직토리 형식
0
56
2
Querydsl 도입
0
67
2
fetch join DISTINCT 중복제거
1
82
2
표준 예외와 커스텀 예외 사용 전략 질문
0
85
3
이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.
1
177
2
테스트를 위한 코드
1
105
2
프로젝트 실행 에러
0
150
2
PDF 문서에 오타가 있어서 알려드립니다.
1
102
1
enum질문
1
86
1
테스트 후 AfterEach 함수에서 나오는 쿼리
0
136
2
테스트 fixture
1
210
2
./gradlew test 실행시 인식할수 없다고 뜹니다.
0
140
1
test 코드 실행시 경고가 발생합니다.
0
140
1
13강 User Kotlin 변환중
2
169
3
'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문
2
174
1
-
0
141
2
4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?
0
310
3
junit import 불가
0
269
3
테스트 코드와 관련하여 질문이 있습니다.
1
216
1
hibernate가 select를 두번 하는 이유
0
237
1





