묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
orderItem에 연결되는 order_id는 어느 시점에서 연결이 되는 걸까요?
안녕하세요, 김영한님 야생형 스타일로 강의 잘 듣다가 질문드립니다.질문을 적다가 order가 형성되는 순간에 해당 order와 입력된 orderItem과 연결이 되는 거 같다는 생각이 들었습니다. 제가 생각한 게 맞는지 질문드립니다. 정리하자면, OrderService에서 order 메소드를 실행할 때 orderItem과 생성된 order_id는 order가 생성되는 순간 해당 order_id와 orderItem와 연결되는 건가요? 답변해주시면 감사하겠습니다.감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
더티체킹 관련 질문 드립니다.
TB_NOTICE tbNotice = em.createQuery("select n from TB_NOTICE n where n.use_flg = 1 and n.read_flg = 0", TB_NOTICE.class) .getSingleResult();tbNotice.setUseflg(0);//이렇게 실행하면 더티 체킹이 안되는 것 같은데 이유가 있을까요?//반드시 persist된 객체만 더티체킹이 가능한 것 인가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 관련 persist 전에 쿼리가 날아가는 경우
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요. 섹션 3 영속성 관리 부분을 들으며 궁금한 점이 생겼습니다. EntityManager를 이용해 엔티티를 em.persist(entity) 했을 때 영속화만 시키고, DB로는 쿼리가 안 날아가는 것으로 들었습니다. 테스트 환경이 잘못된 것인지 Spring boot 환경에서는 다른건지 궁금해서 질문 남깁니다. 저의 테스트 코드를 첨부합니다. 커밋하기 전 em.persist(studio);를 했을 때 Insert 쿼리가 나갑니다 ㅠㅠ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; @SpringBootTest public class NewTest { @Autowired EntityManagerFactory emf; @Test public void test() { EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Hello hello = Hello.builder() .name("hello") .build(); System.out.println(">>>>>>>"); em.persist(hello); System.out.println(">>>>>>>"); System.out.println(">>>>>>> Commit"); tx.commit(); System.out.println(">>>>>>>"); em.close(); } }
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소와 영속성 컨텍스트
1. 테스트의 주문취소 부분에서, 멤버가 가지고 있는 order에도 주문취소가 적용되는 지 확인하고 싶어 assertEquals(OrderStatus.CANCEL, member.getOrders().get(0).getStatus()); 이렇게 코드를 추가해보니 테스트가 통과되더라구요. 이것도 영속성컨텍스트가 다 관리해주기 때문인가요?? 2. 혹시나 하는 호기심에 cancelOrder대신에 em.remove 를 사용하여 해당 Order를 지워봤습니다. 그렇게 할 경우 db내에서 해당 튜플은 지워지지만 위에처럼 객체 내에서 추적하여 Member가 가지고 있는 Order에 영향을 주는가했더니 그렇지 않더라구요. 이런식으로 작동하는것이 맞나요? 아니면 제가 놓치고 있는것이 있을까요. 3. (2번이 맞다는가정의 질문) 앞으로 다른 앱을 만들 때 게시글이라던지 특정 객체를 삭제하고 싶을 때, 영속성 컨텍스트가 관리를 해주기 원한다면, 이런식으로 일종의 논리삭제를 해주는 식으로 진행해야 하는건가요?