안녕하세요, 김영한 강사님. 양방향 매핑 관계에서 '주인이 아닌쪽은 읽기만 가능하다' 라고 설명해 주셨는데요, 이 의미가 잘 이해가 가지 않습니다. 저는 이를 이해하기로, Member(하인) - Order(주인) 관계에서 List<Order> orders = member.getOrders(); 로 가져온 order 객체들에 대해 수정이 불가능하다라고 이해를 했는데요, 간단한 실험을 해보니 orders.forEach(order -> { order.setOrderStatus(OrderStatus.CANCEL); entityManager.persist(order); }); 의 방법으로 order들이 update 되는 것을 확인할 수가 있었습니다. 반대로 order.getMember(); 로 가져온 member들에도 수정이 가능했고요. 혹시 제가 잘못 이해하고 있는것일까요? 감사합니다.
안녕하세요. 강의를 듣고 사이드 프로젝트를 하면서 `p6spy` 를 잘 활용하고 있는데요. 강의 내용 중에 prod 에서는 성능 관련을 확인 후 사용해야 된다는 내용을 보고 궁금해졌습니다. 처음에는 그냥 `build.gradle` 에서 prod 설정에만 안뜨게 하면 되겠지 (dev, test 에서는 되는 것을 의도) 라고 생각했는데, profile 에 따라 `build.gradle` 이 동적으로 움직이는 건 application.xml 이랑은 다르게 좀 어렵더라구요; 그래서 질문은 2개 입니다. 1. profile 에 따라 `build.gradle` 의 설정 (특히 dependency) 이 동적으로 움직이게 하는 것을 어떻게 하면 좋을까요? 2. `p6spy` 와 같은 외부 라이브러리의 성능 검증은 어떻게 하는 것이 좋을까요?
안녕하세요. 영한님. size 함수의 결과값을 확인하고 싶어서 똑같이 입력했는데 for(Integer s : result) 부분에서 s = 0 이 출력되지 않습니다. 아래 코드에서 어느 부분이 잘못됐는지 알려주시면 감사하겠습니다. try { Member member1 = new Member() ; member1.setUsername( " 관리자 1" ) ; em.persist(member1) ; Member member2 = new Member() ; member2.setUsername( " 관리자 2" ) ; em.persist(member2) ; em.flush() ; em.clear() ; String query= "select size(t. members ) from Team t" ; List<Integer> result = em.createQuery(query , Integer. class ) .getResultList() ; for (Integer s : result){ System. out .println( "s = " + s) ; } ; tx.commit() ; }
안녕하세요!! 컨트롤러를 보다가 단순 호기심이 생겨서요 MemberController와 ItemController에서는 회원가입을 하거나 상품을 등록할때, MemberForm클래스나 ItemForm클래스를 만들어서 파라미터값으로 넘겨주셨습니다. 그런데 OrderController에서는 주문을 할 때 OrderForm을 만들지 않고, 하나하나 @RequestParam으로 넘겨준 특별한 이유가 궁금해서 질문드렸어요 별다른 이유가 없으면 OrderForm을 만들어서 넘겨도 되는거죠??
안녕하세요 영한님 JPA 책 부터 인프런의 여러 좋은 강의들 항상 잘 듣고 배우고 있습니다. 간혹 기본키를 숫자 형태로 max + 1로 하는 레거시한 프로젝트를 만나는 경우가 있는데요. 이 경우 동시성 이슈 관련하여 JPA에서 어떤 전략을 사용해야하는지 궁금합니다. (Spring Data JPA 사용 중입니다) 구체적인 예시를 들면 * 사용자 - 식단카드라는 두 개의 테이블이 존재합니다. * 식단카드에는 card_key, user_id를 복합키로하며 그 외 카드 식단 정보가 있습니다. * 식단카드 생성시 user_id를 조건으로 검색하여 가장 높은 card_key를 가져와 + 1해서 card_key를 만들어 저장합니다. 이 때 클라이언트 단에서 비동기 처리로 여러 식단카드를 등록하려다보니 먼저 실행된 요청 쓰레드의 트랜잭션이 성공하고, 두번째 실행된 요청 쓰레드가 먼저 실행된 쓰레드랑 같은 최근값을 읽고 + 1해서 커밋하려니 중복된 키 오류가 발생합니다. 제가 시도해본 방법은 여러가지였는데, 모두 잘 안되더라고요. MariaDB innoDB 엔진 사용하고요. 기본적으로 JPQL을 사용하여 max + 1 값을 가져오는 Repository 인터페이스 메서드 선언 시도 해본 방법 1. @Transactional isolation level을 SERIALIZBLE 로 변경 * 해결 되지 않음 2. 비관적 락 @Lock(LockModeType.PESSIMISTIC_WRITE) * 해결 되지 않음 * 구글링 찾아보니 기본키 인덱스 이외의 다른 인덱스가 있을 경우 동작하지 않는다고 하는데, 정확한 공식 문서 내용을 찾아볼 수가 없네요. 3. JPQL NATIVE QUERY 사용하고 FOR UPDATE로 LOCK * 해결 되지 않음 결국 Spring Retry 연결하여 실패시 계속 재시도하여 들어가게끔 처리는 했는데, 어거지로 해결한 느낌이라 계속 속에 남아있네요 ㅜㅜ 트랜잭션이나 LOCK에 대해서 공부해서 적용해봐도 안되는 이유를 모르겠습니다ㅜㅜ
제가 야생형 코스를 따라가고 있어서 아직까지 이해가 잘 가지 않고 그냥 따라치기 바쁘네요 ㅎㅎ 다름이 아니라 JPA를 사용하면 어플리케이션 실행 할때마다 테이블을 계속해서 만들고 시작하나요 ?? 그리고 제가 디비가 약해서 디비 관계에대해 잘 이해 못하는 부분들이 조금씩 있고 각 어노테이션들의 기능들을 기본편을 보지않고 와서 그런지 모르고 가고 있는데 계속해서 진도 진행해도 될까요?
안녕하세요 기본편 강의 잘 들었습니다! 질문이 하나 있는데, DB에 접근하는 클래스를 만들 때 스프링 공식 사이트에서는 extends JpaRepository<> 있고 현재 강의에서는 @Repository로 접근을 하는데 둘의 차이가 있는 것 인가요? 추상적인 질문이었다면 죄송합니다 ㅠㅠ
안녕하세요 영한님 Jpa 로 단순 조회기능을 이용하게될때 Service Layer 에서 @Transactional(readOnly=true) 를 메소드에 선언해서 사용했었는데요 테스트하다보니 @Transactional 어노테이션 없이 사용해도 조회도되고 controller 단에서도 영속성컨텍스트가 살아있는걸로 확인이 되었습니다 (osiv 는 켜놓았습니다) findById or findAll 같은 단순 조회기능에서는 @Transactional 은 없어도 되는건가요? spring 에서는 기본적으로 트랜잭션범위와 영속성컨텍스트의 범위가 동일하다고 알고있는데 @Transactional 설정을 안해줘도 조회기능에선 영속성컨텍스트가 유지된다고 보면될까요 ? 아니면 @Transactional(readOnly=true) 는 @Transactional 없이 동작하는것과 어떤 차이가 있는걸까요 ㅠㅠ
강사님 안녕하세요, 강의를 듣다 궁금한 점이 있어서 글 올립니다. 보통 ItemService 같은 서비스 클래스는 구현체를 만드는 것으로 알고 있는데, 혹시 강의처럼 ItemServiceImpl 클래스를 안만들고 바로 구현해도 크게 문제되지는 않는건지 궁금합니다. (JPA라서 그런건지 아니면 예제이기 때문에 단순화 시키신건지 등 ..) 답변 부탁드리겠습니다! 감사합니다!!
안녕하세요 선생님, 질문이 있습니다. !pip install mmcv-full 이후에 런타임 다시 시작을 해야 import mmcv가 정상 작동하는데, 코랩 런타임 다시 시작하는 것이 어떤 원리인가요? 런타임 다시 시작을 안하면 import mmcv가 정상 작동하지 않는 이유가 궁금합니다.
선생님, 강의 잘 듣고 있습니다. 강의를 듣다가 궁금증이 생기는데 9/20 부터 15/20 즈음까지의 강의는 모두 결국 seaborn 라이브러리 안에는 여러 개의 xxplot이 있다는걸 소개하는거고 곧 활용할 수 있는 api에는 이러이러한 것이 있다 고 설명하는 셈이잖아요? 헌데 이런걸 전부 외우는 현업 개발자는 없고 그분들도 필요나 설계에 따라 맞게 쓰는 정도로 활용하는 걸루 알고 있는데 그래도 강의를 들으면서 최소한 숙지해야 하는 정도 라는게 있다면 어느 정도가 적절할는지 궁금합니다. 참고로 저는 원래 자바랑 c++ 위주로 쓰는 주니어이고 파이썬으로는 알고리즘까지는 낯설어서 잘 쓰진 않지만 자료구조 구현은 할 줄 아는 정도입니다. 그리고 최근에 머신러닝 배우면서 이 강의는 캐주얼한 용도로 듣고 있습니다. 감사합니다!