게시글
질문&답변
2024.11.29
일대 다 중간테이블
안녕하세요. 염경호님, 공식 서포터즈 코즈위버입니다.'사용자가 한 랭크만' 참여 가능하다는 의미를 정확히 알 수 없어 임의로 생각해보았는데요. 주요 엔티티는 '회원'과 '게임'으로 보이며 파생된 엔티티가 '랭크'(혹은 '매칭데이터'나 '게임결과'가 적당한 이름 같습니다)로 보입니다. 게임이 'LOL' 같은 형태로 운영되는 게임이라고 생각하겠습니다.회원과 게임 엔티티의 관계를 생각해보면, 회원은 게임에 지속적으로 참가할 수 있습니다. 또 한 판의 게임에 여러 회원이 참가할 수 있으니 둘의 관계는 다대다 입니다.게임이 시작되면 게임 인스턴스가 하나 생성되어야 하며 이는 고유키를 가질 것입니다. 그리고 이 게임에 참여한 회원들이 매핑이 되며 '랭크' 엔티티에 기록 되겠지요.게임이 종료되면 최종 스코어를 '랭크' 엔티티에 업데이트 하겠지요. 그러면 추후 회원의 게임별 결과를 지속해서 조회할 수 있습니다. 감사합니다.
- 0
- 1
- 31
질문&답변
2024.11.20
베스트 프렉티스
안녕하세요. soojinkimss님, 공식 서포터즈 코즈위버입니다.'베스트 프랙티스'는 개발 업계에서 자주 사용하는 용어로, '모범 코드' 혹은 '정석' 정도로 이해하시면 됩니다. 어떤 문제를 해결하는데 일반적으로 널리 쓰이는 코드 패턴, 혹은 유효함을 검증받은 코드 패턴 입니다. 감사합니다.
- 0
- 1
- 49
질문&답변
2024.11.20
컬렉션프레임워크 문제 풀이2 - 문제7 Cart클래스 add() 및 minus() 코드 방식에 대하여서 질문
안녕하세요. 생각하는자님, 공식 서포터즈 코즈위버입니다.요구사항을 정확히 구현하고 있다면 본인의 코드를 유지하셔도 괜찮습니다.지금 작성하신 코드에서 조금더 안정적으로 보완한다고 하면, minus 메서드에서 없는 상품의 수량을 조절하려고 할 때의 처리가 보완되면 좋을것 같습니다. 물론 장바구니에서 상품 수량을 줄였다는 것 자체가 이미 장바구니에 상품이 포함되어있음을 전제로 하는 것은 맞으나, 프론트에서 처리 문제 등으로 인해 데이터상으론 이미 제거된 상품의 수량을 다시 마이너스로 호출할 수 있습니다. 이럴 때 현재의 minus 코드는 null과 0 을 비교하는 코드가 되어 위험할 수 있습니다. 그러나 이런건 특수한 경우이고 현재 강의에서는 이정도까지 보완을 생각할 필요는 없습니다. 강의에서 사용한 코드는 강의를 위해 쉽게 풀어낸 코드이긴 하나, 실무에서 겪은 여러 경험이 녹은 코드이기도 합니다. 그래서 불필요하게 안전지향적인 코드로 보일수도 있습니다. 강의자가 강의에서 보여준 코딩습관 왜 생겼을지 고민하는 것도 발전에 많이 도움이 되실거에요. 보통 실무에서 한번 사고가 터져봤기에 생긴 습관인 경우가 있습니다 :) 감사합니다.
- 0
- 1
- 36
질문&답변
2024.11.14
고급1편 안 듣고 고급2편 들어도 되나요?
안녕하세요. tkadnd2242님, 공식 서포터즈 코즈위버입니다.고급1편과 고급2편은 서로 다루고 있는 주제가 다르고 소스코드가 연결되지 않기에고급2편을 먼저 진행하셔도 무리는 없습니다. 감사합니다.
- 0
- 2
- 165
질문&답변
2024.11.13
final 참조형 변수
안녕하세요. soojinkimss님, 공식 서포터즈 코즈위버입니다.final 참조형 변수는 변수에 할당된 인스턴스를 더이상 변경할 수 없음을 의미합니다.반면 싱글톤 패턴은, 프로그램 전역에서 인스턴스를 단 한번만 생성하도록 하는 방법입니다. 가령 어떤 싱글톤 객체 Banana가 있을 때 new 연산자로 바나나 인스턴스를 계속 생산하여도 단 하나의 인스턴스만 사용하게 하자는 것입니다. 아래의 예시코드를 참고하시면 불변변수와 싱글톤의 차이를 아실 수 있을거에요.// Banana가 싱글톤 객체게 아닐 경우 // banana1, banana2 는 서로 다른 인스턴스를 참조 // banana1, banana2 는 불변 참조형 변수 private final Banana banana1 = new Banana(); private final Banana banana2 = new Banana(); public class Banana() {} // Banana가 싱글톤 객체일 경우 // banana1, banana2 는 같은 인스턴스 참조 // banana1, banana2 는 불변 참조형 변수 private final Banana banana1 = Banana.getInstance(); private final Banana banana2 = Banana.getInstance(); public static class Banana() { private static Banana banana; public static Banana getInstance() { if (banana == null) { banana = new Banana(); } return banana; } } 감사합니다.
- 0
- 2
- 41
질문&답변
2024.11.13
자바 교재 문의드립니다
안녕하세요. pjm927님, 공식 서포터즈 코즈위버입니다.수강화면에서 오측의 '커리큘럼' 메뉴를 확인하시면, 리스트 상단에 '수업자료', '강의소스코드' 항목을 확인하실 수 있습니다. 여기서 [자료다운] 버튼을 클릭하시어 수업자료를 받으실 수 있습니다. (사진) 감사합니다.
- 0
- 2
- 102
질문&답변
2024.11.13
왜 굳이 값 타입을 별도로 만들어서 Entity에 포함하도록 하는 건지, 이해가 잘 안 가요!
안녕하세요. WTeobp님, 공식 서포터즈 코즈위버입니다.엔티티를 분리한다는 건 데이터베이스의 테이블을 분리한다는 의미입니다. 즉 '주문'과 '배송지' 이 둘을 다른 테이블에서 관리한다는 의미가 됩니다. 보통 주문에는 배송지 정보가 반드시 필요하며 딱 하나만 존재합니다. 그리고 배송지 정보는 '주문'을 구성하는 필수요소로 볼 여지가 크며 이를 분리하여 관리해야 할 이유는 적습니다. 그래서 주소를 주문엔티티와 분리하여 관리하는 것 보단 주문엔티티 내의 필드로 선언하여 사용합니다. 그런데 주문에는 배송지에 관한 필드 외에도 무수히 많은 필드가 있을 수 있습니다. 그러면 각각의 필드가 어떤것끼리 관련있고 어떤것은 관련이 없는지 그룹을 분리해서 관리하는것이 유리한데요. 그럴때 값타입을 활용하여 필드들을 논리적으로(+ 코드상으로도) 분리하는 방법을 적용할 수 있습니다.감사합니다.
- 0
- 1
- 87
질문&답변
2024.11.11
JPA 연관관계 자체의 필요성에 대한 질문입니다.
안녕하세요. cw k님, 공식 서포터즈 코즈위버입니다.JPA는 기본적으로 연관관계를 지원하는데요, 이를 사용할지 말지는 개발상황에 따라 달라질 수 있습니다.말씀하신것처럼 MSA를 고려하여 데이터가 서로 다른위치에 저장할 경우 연관관계를 이용할 수 없고 별도의 방법을 사용해야 합니다. 반면 규모가 그리 크지 않아 데이터를 한 곳에 보관하는 경우 연관관계를 적극 이용하는 것이 편리할 수 있습니다. 기술은 상황에 따라 꺼내어 쓸 수 있어야 합니다. 어느 상황에나 다 쓸 수 있는 도구는 없습니다. 연관관계를 이용하는 방법을 습득한 상태에서 상황에 따라 사용하지 않는 것과 연관관계를 사용할 줄 몰라서 쓰지 않는 것은 차이가 있습니다. 그러니 학습단계에서는 연관관계 사용법에 익숙해 지는것을 추천드립니다. 감사합니다.
- 0
- 2
- 51
질문&답변
2024.10.23
트랜잭션 질문
안녕하세요. kongminoo님, 공식 서포터즈 코즈위버입니다.영속성 컨텍스트에서 데이터를 수정하기 위해서는 반드시 트랜잭션 내에서 수정해야 한다는 제약이 있습니다. 그러나 단순히 조회만 하는 것이라면 문제 없습니다.관계가 모두 지연로딩으로 설정되어있다면 말씀하신 내용이 맞습니다.현재 명시적으로 @Transactional 을 선언하지 않았기에 트랜잭션이 발생하지 않습니다. Repository의 경우 SpringDataJPA 프레임워크를 사용한다면 자동으로 트랜잭션이 실행되나 그런 경우가 아니라면 별도의 트랜잭션이 실행되지 않습니다.일반적으로 Service 클래스의 상단에 @Transactional 을 사용하게 되는데요 이 경우 서비스 메서드에 진입하기 전 트랜잭션을 시작하고, 서비스 메서드에서 벗어난 후 트랜잭션을 종료(커밋) 하게 됩니다.감사합니다.
- 0
- 2
- 50
질문&답변
2024.10.23
더티체킹에 궁금한 점이 있습니다.
안녕하세요. kongminoo님, 공식 서포터즈 코즈위버입니다.말씀하신것처럼 영속성 컨텍스트는 더티체킹을 지원하기에 트랜잭션이 끝나는 시점에 flush 하여 데이터베이스와 동기화를 진행합니다.그래서 별도로 save 메서드를 호출하지 않아도 됩니다.감사합니다.
- 0
- 2
- 33