묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
현업에서 곱하기 연산 처리하기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. getTotalPrice 부분에서 가격과 개수를 이용해 곱하기를 해 종합 가격을 반환해주는데 만약 가격이 정수가 아닌 실수인 경우 소수점이 나올 텐데 이런거는 어떻게 처리하나요? 단순히 반올림하거나 잘라버리지는 않을거 같은데
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
화면에 관한 메소드는 엔티티에 넣지 말라고 하셨는데
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]BookForm을 인자로 받는 생성자를 넣는 건 별로인가요? 하긴 그러면 또 RestAPI맞는 생성자, 등 지저분해 지긴 할 거 같은데..
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberForm은 이미 모델에 들어가 있는거죠?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]검증오류가 날 시 BindingResult에 의해 들어가는 게 아니라,저렇게 인자로 받는 건 이미 모델에 들어가 주는거죠?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
getOrder 안되는 이유,member 테이블 정보
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 오류가 나는데 왜 안되는건가요..? member 클래스 안에 있는 컬렉션객체를 가지고 오는 거 아닌가요?그리고 멤버 테이블에 address 임베디드 한 값이 안떠요.. 해결방법 알려주시면 감사하겠습니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트에서 @Transactional 을 붙히지 않으면 왜 일차캐시가 작동하지 않을까요?
@Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional public void signUp(Member member){ memberRepository.save(member); } public Member findOne(Long id){ return memberRepository.findById(id).orElseThrow(); } } @Test void signUp() { Member member1 = Member.builder() .userId("user1") .birthDay(LocalDate.now()) .password("pass") .email("aa@bb.cc") .build(); memberService.signUp(member1); Member member2 = memberService.findOne(member1.getId()); assertThat(member1).isEqualTo(member2); } 트랙잰션이 Memberservice에서 signUp을 완료 하고 트랜잭션이 끝난다고 영속성 컨텍스트가 비워지지 않다고 이해 했는데 왜 같은 id 값으로 다시 찾을 때 동일성을 보장하지 않는걸까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
order의 orderItem
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이게 주문아이템이 한번에 여러 개 일 수 있으니까,public Long order(Long memberId, List<OrderItemDto> orderItemsDto){ List<OrderItem> orderItems = new ArrayList<>(); for( OrderItemDto orderItemDto : orderItemsDto){ Item item = itemRepository.findOne(orderItemDto.itemId); int orderPrice = orderItemDto.price; int count = orderItemDto.count; OrderItem orderItem = OrderItem.createOrderItem(item, orderPrice, count); orderItems.push(orderItem); } }이런 식으로 하는 것도 괜찮죠?제가 아직 Dto를 잘 몰라서Data to Object 인 거 같은데 그러면OrderItem을 만들어서 Dto에 넣어야 하나 생각했더니 그건 왠지 아닌 것 같고.. 컨트롤러 단계에서 엔티티를 꺼내서 써야 하게 될테니..그냥 Dto를 데이터를 모아 사용하기 편한 오브젝트로 만들어주는 그런 느낌으로.. 여튼 저런 식으로 하면 잘한건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
createOrderItem의 setter 사용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그 지금은 예제라 그런거고,실무에서는 저렇게 많은 setter들이 밖으로 표출되지는 않죠?보통 저런 건setter를 private 등으로 한 다음에OrderItem에 비즈니스 메소드를 추가하는 게 맞는거죠?예를들어orderItem.initOrderItem(item, orderPrice, count)해서요.메소드 명은 적절한게 생각이 안나서.. 저는 setter는 가급적 쓰지 말고,연관관계 메소드 구현할 때 처럼 부득이 하게 필요할 경우만 public으로 하게끔 하는 걸로 이해하고 있어요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MEMBER테이블 생성안됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 다른 MEMBER테이블이 생성되지 않는다는 게시글을 읽고, H2경로 설정에 대한 글 전체 다 읽었지만 여전히 testMember()메서드는 통과하지만 MEMBER테이블이 생성되지 않습니다.... 참고로 로그에 CREATE TABLE( ... )은 정상적으로 나오네요. application.yaml은 다른 강의듣는 분 자료 검색해 참고해서 그대로 복붙했습니다(띄어쓰기 문제ㄴㄴ) jpashop의 경로는 C:에 있습니다..... 추가) 내pc>다운로드 의 경로에 있는 jpashop.trace, jpashop.mv파일을 삭제 후 이렇게 연결했더니 성공했지만 testMember()메서드가 통과하지 못하네요..... 오류메세지는 이렇게 납니다.org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported database file version or invalid file header in file "C:/Users/User/jpashop.mv.db" [90048-214] 제가 궁금한 점은왜 h2.bat실행시 바로 꺼지는가application.yaml과 h2 console의 경로만 맞춰주면 강의를 따라하지 않아도 된다고 하는데 맞는가jpashop의 경로와 h2의 경로를 맞춰야하는가...??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
p6spy 사용시 log 두번 출력
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]p6Spy를 사용하는 중 로그가 두번 찍히는 경우가 생겼습니다.현재 mariaDB를 사용중이며,jpa: properties: hibernate: show-sql: 'false' format_sql: 'true'설정은 이렇게 해줬습니다. 혹시 왜 두번찍히는 건지 알 수 있을까?gradle에 p6spy 추가해주었습니다.implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원가입 테스트 select 문이 나가는 이유.
@Test public void 회원가입(){ Member member = new Member(); member.setName("memberA"); Long savedMemberId = memberService.join(member); Member findMember = memberService.findOne(savedMemberId); assertThat(member).isEqualTo(findMember); }근데제가 em.find() 동작이 먼저 영속성 컨텍스트에서 찾아보고 있으면 그걸 return.없으면 DB에 쿼리 날려서 가져온 다음에 return.(쓰기지연은 잠깐 생각 안하고)로 알고 있는데, 그렇다면 코드상멤버 생성하고,join해서 쿼리가 쌓이고,그 다음 findOne해서 가져오는데, 저게 결국은 em.find() 잖아요. 그러면 이미 영속성 컨텍스트에 id가 같은 게 있기 때문에 그걸 반환하잖아요. 그래야 할 것 같은데 select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.name=?이렇게 로그로 나가요.그래서 아, isEqualTo니까 혹시 막 이름같은 거 참조해서 가져오는 건가? 했는데isSameAs 해봐도 똑같아요.왜 하필 name으로 조회하는지도 모르겠어요.em.find()쪽이 실행된 것은 분명해요.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방관계 편의 메소드 이름
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]set~~~ 말고 다른 이름이 좋지 않나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
SpringPhysicalNamingStrategy 바뀐건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]찾아도 안나오는데 CamelCaseToUnderscoresNamingStrategy 이걸로 바뀐 것 같네요.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[정보] 카테고리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]저도 뭐 저런 거 할 때 그냥 1depth 카테고리 테이블, 2depth 카테고리 테이블 이렇게 있는 거 아니야? 이렇게 생각했는데,요런 식으로 그러니까,아마도 내 depth, 부모 id, 그 정도로 해서 가져오는 듯 싶네요.대충 내 depth, 부모_id, 카테고리네임 이 정도로 해서한 카테고리 테이블에 다 때려넣는 식 인거 같아요. 그러니까 예를 들어 id를 통해 카테고리를 가져오게 되면,거기에 부모_id, 또 나의 자식들은 내 id를 가지고 있을 테니parent도 가져올 수 있고, child 들도 그냥 cc.parent_id = c.category_id 해서 가져올 수 있는..
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
이번 예제에서 Integer말고 int로 엔티티의 필드가 작성된 이유가 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Integer가 객체라 null이나 그런 것에서 비교적 안전하다고 배웠었던거 같은데.. int로 한 이유가 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
정적 팩토리 메서드에 static이 붙어야 하는 이유
안녕하세요. 강의 잘 보고 있습니다! 다른 분 질문에 궁금한 것이 해소되지 않아 질문드립니다.https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1&unitId=24297&category=questionDetail&q=30892&tab=community정적 팩토리 메소드 사용 이유중에 static 메모리에 올라가기때문에 새로운 객체를 생성하지 않는 장점이 있는 거라고 알고 있습니다. 이 예제의 경우 static을 빼도 JPA가 엔티티로 관리하면서 어차피 사용할 수 있는 부분아닌가요..? 라는 질문에서 강사님께서는 static을 빼보면 이해될 거라고 답변하셨습니다.제가 생각하기로는 정적 팩토리 메서드 안에서 생성자를 통해 인스턴스를 생성하는 것은 똑같아 보이고, 호출할 때 new가 아닌 Order.createOrder()로 호출하는 것 외에는 차이점을 못 느꼈습니다.조금 더 상세한 가르침을 주시면 감사하겠습니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Runwith 어노테이션 오류.. Junit4
강의대로 테스트 클래스 작성중인데.. @RunWith 어노테이션 자동완성이 안되더라구요..? 그래서 코드 복붙 했는데도 저렇게 뜹니다..junit4로 강의랑 똑같이 설정해서 작성했는데 뭐가 문제일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
dtype 조회 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 다른 객체들은 id로 조회가 가능한데 dtype같은 경우는 조회를 어떻게 하는 건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
커맨드성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]선생님들.8:20 이 때 쿼리랑 커맨드 성을 분리하라. 이 말이트랜잭션 때문에 그런건가요? 그러니까 쿼리는 날리면 바로 flush가 되기 때문에 상관없는데, 말하시는 사이드이펙트라는게 그 영속성 컨텍스트 안에 있다가 트랜잭션 commit 시점에 모든 것이 다 DB로 날라가니까,Member를 직접 주게 되면 주소를 주는 것 이기때문에, 영속성 컨텍스트에도 영향을 미쳐, 뭔가 저렇게 save 해놓고 그 member를 직접 다루게 되면 save하는 그 값에도 영향이 있을 수 있기 때문에 그런건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
지금도 application.yml 쓰는 추세인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]물론 회사마다 다를 것 같기는 한데..application.properties가 기본이니 뭔가 보통 이렇게 default로 하는 건 잘 맞기 때문에 두는 것 같아서.. 하긴 뭔가 설정을 표현하는 하나의 방법일 뿐이라 상관없는건가..강의가 이제 그래도 몇년 전꺼라 좀 바뀐 점이 있을까 해서요.
-
해결됨순수 함수형 프론트엔드 언어 Elm 가이드
Elm의 functor?
안녕하세요.또 하나의 선생님 챗지피티와 함께 수강하고 있습니다.그리고 (기대하시는 바와 조금 다르게) 함수형에 대해 전혀 모르지만, 필요와 끌림에 의해 일단 Elm 배우기를 시작했어요.질문입니다."엘름 아키텍쳐 - The Elm Architecture" 강의 중 펑터(functor)라는 표현을 쓰셨는데(정확히 어딘지 다시 못 찾겠네요 ㅜㅜ)챗지피티는 Elm엔 functor 라는게 없다라더라고요. 그런가요?챗지피티에 하고 받은 질문과 답변을 첨부합니다:---> "String.any Char.isDigit password" in here, "Char.isDigit" is called as functor right?> In Elm, the term "functor" is not typically used in the same way as it is in other functional programming languages like Haskell. In Haskell, a functor is a type class that implements the fmap function (or <$>) for a data structure, allowing you to apply a function to the values inside it.However, in the Elm context, Char.isDigit is simply a function that takes a Char and returns a Bool indicating whether the character is a digit or not. When you use it with String.any like String.any Char.isDigit password, Char.isDigit is not referred to as a functor but rather as a predicate function. String.any takes this predicate function and applies it to each character in the string, checking if any of the characters satisfy the predicate.In functional programming terms, you might say that String.any is a higher-order function because it takes another function (Char.isDigit in this case) as an argument. The combination of String.any and Char.isDigit checks each character of the string to see if it meets the criteria specified by Char.isDigit, which is to be a digit.So, to clarify:Char.isDigit is a predicate function.String.any is a higher-order function that applies the predicate to each element in a string.