인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Won-Sang Hwang님의 프로필 이미지
Won-Sang Hwang

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 전이(CASCADE)와 고아 객체

고아 객체 실습관련

작성

·

183

0

안녕하세요.  고아객체 관련하여 중간에 em.flush(), em.clear()를 한 후 다시 parent를 find하여 child list를 remove하면 child 객체가 잘 지워지는데, em.flush(), em.clear()를 하지 않고 child list를 remove하면 child 객체가 안지워 지더라고요. 혹시 어떤 이유로 그렇게 되는지 궁금합니다.

@Component
class MainRunner : ApplicationRunner {

    @PersistenceContext
    lateinit var em: EntityManager

    @Transactional
    override fun run(args: ApplicationArguments?) {

        val child1 = Child(name = "child1")
        val child2 = Child(name = "child2")

        val parent = Parent(name = "parent1")
        parent.addChild(child1)
        parent.addChild(child2)

        em.persist(parent)

//        em.flush()
//        em.clear()

        val find = em.find(Parent::class.java, parent.id)
        find.child.removeAt(0)

        println(find)

    }
}

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Won-Sang Hwang님

제가 자바로 테스트했을 때는 해당 주석이 있든 없든 동일하게 삭제가 되었습니다.

참고 부탁드립니다.

감사합니다.

Won-Sang Hwang님의 프로필 이미지
Won-Sang Hwang

작성한 질문수

질문하기