Skip to content

[Spring] 다대다 관계 업데이트 #190

Answered by PFCJeong
DoohyunHwang97 asked this question in Q&A
Discussion options

You must be logged in to vote

오 전체적인 코드를 보여주셔서 이제 이해가 가네요. 감사합니다 (_ _)

제가 세미나에서 강조했듯이, 트랜잭션-영속성 컨텍스트-스레드는 한 몸입니다. 우리가 사용하는 JPA의 모든 기능은 스레드 단위로 동작합니다.
현재 겪고 계시는 문제는 코드에서 위 속성을 고려하지 않지 않았기 때문입니다.

  1. 지금 코드를 보면 현재 스레드에서 트랜잭션을 열었는데요, artist는 다른 스레드에서 조회하고 있습니다. 뒤에 이어지는 album, song도 마찬가지입니다. 트랜잭션을 현재 스레드에서 열고, 막상 엔티티 조회는 다른 스레드(트랜잭션을 열지 않았음)에서 조회했기 때문에, 영속성 컨텍스트 기능을 사용하지 못하고 있는 것입니다.
 TransactionTemplate(txManager).executeWithoutResult {
                val artist = threads.submit<ArtistEntity> {
                    val artistEntity = artistRepository.findByName(albumInfo.artist)
                    if (artistEntity == null) {
                        val newEntity = ArtistEntity(name = albumInfo.artist)
                     …

Replies: 1 comment 12 replies

Comment options

You must be logged in to vote
12 replies
@DoohyunHwang97
Comment options

@DoohyunHwang97
Comment options

@PFCJeong
Comment options

Answer selected by davin111
@DoohyunHwang97
Comment options

@DoohyunHwang97
Comment options

@PFCJeong
Comment options

@DoohyunHwang97
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
Spring Spring 관련 내용
2 participants