묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 전이 질문
다음은 강의와 실습을 통해 얻은 지식입니다. - 부모위주로 개발을 진행하고 싶을 때 영속성전이 사용 - @ManyToOne 또는 @OneToMany 의 속성에 Cascade 속성을 넣는다고 해서 DB 테이블생성쿼리에 별도의 설정이 추가되는 것은 아님 - 즉, 어플리케이션측 설정이라 설정 덕분에 연관된 자식 엔티티에 대한 저장, 삭제쿼리가 추가적으로 질의됨(부모엔티티에 대한 쿼리와 함께). 질문1. FK 생성시 on update/delete 옵션이 있습니다.(https://h5bak.tistory.com/125 ) 영속성전이를 공부하면서 jpa의 cascade속성명과 유사한 TABLE FK의 on update/delete 옵션기능을 알게됐습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE `member` ( `member_id` BIGINT(20) NOT NULL, `username` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci', `team_id` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`member_id`) USING BTREE, INDEX `FKcjte2jn9pvo9ud2hyfgwcja0k` (`team_id`) USING BTREE, CONSTRAINT `FKcjte2jn9pvo9ud2hyfgwcja0k` FOREIGN KEY (`team_id`) REFERENCES `AAA`.`team` (`team_id`) ON UPDATE RESTRICT ON DELETE RESTRICT ) ; Colored by Color Scripter cs ON UPDATE / ON DELETE 외래키 옵션으로는 restrict / cascade / set null / no action 이 있습니다. 위 옵션들은 외래키를 갖는 다쪽(자식쪽)에 설정할 수 있는 옵션입니다. 위 4가지 옵션을 JPA 어노테이션으로 셋팅이 가능한지 궁금합니다. 질문2. 책과 강의에서는 영속성전이에 대해서 @OneToMany위주로 설명이 진행됐습니다. 저는 책 p.173상단표에 있듯 @ManyToOne에 cascade속성을 이용해보는 방식도 궁금해졌습니다. 하지만 이내 "특정 자식객체A를 삭제했다고 부모객체를 삭제하면 같은 부모를 둔 다른 자식객체B,C,D 입장에서 말이 안되는 상황" 이라고 생각이 들었습니다. @OneToMany의 cascade속성을 실습하려면 자식, 부모의 상황을 어떻게 고려해야하는지 조언을 구하고 싶습니다.
-
미해결홍정모의 따라하며 배우는 C언어
공부를 진행하는데 딜레마에 빠집니다.
강의를 정말 열심히 보고있습니다. 다른 분들은 다들 어떻게 진행되는지는 모르겠지만... 매 연습문제마다 제대로 풀어본적이 없는 것 같습니다. 정답을 본 후 혼자 한글파일에 따로 정리해서 분석도 해보고 왜 이렇게 나왔을까에 대한 고찰도 해보고 하는데 점점 낯설게 느껴지는 것같아서 음... 박탈감? 이 조금 드는 것 같습니다. 커뮤니티 보면 다들 코드도 잘짜시고 이해도 잘하시는거 같은데 제가 어려워 하는건지... 스스로 코드를 짜봐도 안되는게 당연한건지.. 참 어렵습니다. 변수선언 부터 프로토타입 쓰는것도 낯설기만하는데 이대로 계속 진행하는게 맞을까요? 아니면.. 다시 뒤로 돌아가서 강의를 한번 더듣는게 나을까요 ㅠ.ㅠ 참 어렵습니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
then(javaMailSender) 에서 import가 되지 않습니다.
11분 40초 쯤에서 then(javaMailSender).should().send(any(SimpleMailMessage.class)); 이 부분에서 then이 임포트가 되지 않습니다..org.mockito.core 를 따로 쳐서 임포트 해보려 했지만 뜨지 않습니다. 전체코드입니다. package com.wook.demo.account; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import org.mockito.configuration.*; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.mockito.BDDMockito.Then; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.web.servlet.MockMvc; @SpringBootTest @AutoConfigureMockMvc public class AccountControllerTest { @Autowired private MockMvc mockMvc; @Autowired private AccountRepository accountRepository; @MockBean private JavaMailSender javaMailSender; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signpForm() throws Exception { mockMvc.perform(get("/sign-up")) .andDo(print()) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")) .andExpect(model().attributeExists("signUpForm")); } @DisplayName("회원 가입 처리 - 입력값 오류") @Test void signUpSubmit_with_wrong_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "shinwook") .param("email", "email...") .param("password", "12345") .with(csrf())) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")); } @DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "shinwook") .param("email", "email@naver.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@naver.com")); then(javaMailSender).should().send(any(SimpleMailMessage.class)); } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테이블 생성은 되는데 insert 쿼리가 실행이 되지 않습니다.
package jpabook.jpashop;import org.junit.jupiter.api.Assertions;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;import org.springframework.boot.test.context.SpringBootTest;import org.junit.jupiter.api.Test;import org.springframework.test.annotation.Rollback;import org.springframework.transaction.annotation.Transactional;import static org.junit.jupiter.api.Assertions.*;import static org.hamcrest.MatcherAssert.assertThat;import static org.hamcrest.Matchers.equalTo;// 내장 서버를 실행하지 않고 테스트 수행@SpringBootTest@AutoConfigureMockMvcpublic class MemberRepositoryTest { @Autowired MemberRepository memberRepository; //의존성 주입 @Test //테스트 실행 함수 @Transactional // 트랜잭션 추가 @Rollback(value = false) public void MemberRepositoryTest() throws Exception { //given Member member = new Member(); member.setUsername("memberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then assertThat(findMember.getId(), equalTo(member.getId())); assertThat(findMember.getUsername(), equalTo(member.getUsername())); }}
-
미해결스프링 핵심 원리 - 기본편
스프링 컨테이너 생성 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. ApplicaitonContext는 인터페이스이고 AnnotationConfigApplicaitionContext는 클래스 즉 구현체인데 이렇게 되면 DIP 위반이라고 전 강의에서 공부를 했습니다. 강의상에서는 위 사진과 같이 작성하셨습니다. 질문 1. 첫번째 사진은 DIP 위반이 맞는지 궁금합니다. 질문 2. DIP 위반이 맞다면 pdf파일에는 왜 저렇게 작성하셨는지 궁금합니다. 감사합니다 !
-
미해결구글 애널리틱스4 (GA4) 미니 코스
GA4로 설정된 보고서에서 일부 데이터를 제대로 확인할 수가 없는데 왜 그런지 문의를 드려봅니다.
트래픽과 관련된 부분의 데이터를 확인하는데 페이지가 나눠져서 보이는데 아니라 하나로 묶여 보이기 시작했는데 혹 이유가 뭔지 알 수 있을까요? 그러면서 보고서 화면에서 그 전에는 없던 안내 문구가 뜨는데, 정확히 의미하는 바를 파악하기가 힘드네요..ㅜㅜ 기준점 적용됨 이 보고서는 기준점이 적용되어 있으며 데이터가 최소 집계 기준점을 충족할 때만 애널리틱스의 데이터(보고서, API, 데이터 내보내기)를 반환합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컬렉션 페치 조인 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요! 컬렉션 페치 조인 용어에서 간단한 질문이 있습니다. 컬렉션 조회 최적화 수업을 듣게 되면, OneToMany 관계에서 컬렉션 페치 조인을 하게 됩니다. 이때, 만약 '컬렉션 페치조인에서 컬렉션이 무엇이고 페치 조인이 무엇이에요?'라는 질문이 들어오면 먼저 findAllWithItem() 메서드를 예시로보면, (1) 페치 조인은 Order 테이블을 기준으로 member, delivery, orderItems, item 이 페치조인이 일어나고, (2) 컬렉션 orders 변수에 select문 결과를 저장 컬렉션 orders 변수에 select문 결과를 저장한다. 이와 같이 컬렉션와 페치조인이 사용되는 것을 컬렉션 페치조인이라고 한다. 라고 설명을 한다면 괜찮은 답안일까요? (나중에 면접에서 설명하라고 하셨을 때 이와 같이 하면 될지 고민이 많이되네요ㅠㅠ)
-
미해결실무에서 바로 쓰는 영어 이메일
강의자료 요청드립니다.
안녕하세요 강의자료 요청드립니다. nwjnwj@naver.com 감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님! 질문 있습니다!
Stack을 활용한다 생각하고 문제를 풀었는데요! 해설 풀이 하신 것엔 한 번의 반목분을 돌았으니, 제 코드가 비효율적으로 구성된 걸까요?? (시간 복잡도 면에서) function solution(s) { let answer = "YES"; let stack = []; for (let i = 0; i < s.length; i++) { stack.push(s[i]); } for (let j = s.length - 1; j >= 0; j--) { if (stack.pop() !== s[j]) answer = "NO"; } console.log(answer); } solution("gooG");
-
미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
if나 case를 통한 분기와 Assumptions의 차이점 문의
강의 중 환경변수에 따라서 테스트가 실행되는 것을 확인하였습니다. 궁금한점은 이렇게 assumingThat과if, switch를 통한 분기문으로 TEST하는 것에서 어떤 차이점이 있는지 궁금합니다.혹은 어떤 이점이 있는지도 궁금합니다.스스로 학습해보길 권장하신다면 키워드라도 잡아주시면 큰 도움 될 것 같습니다. 감사합니다. 가족과 함께 항상 건강하세요 ^_ ^
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 강의 수강 전 사전지식 관련으로 질문있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 김영한님의 Spring 강의와 JPA 강의를 구매한 학생입니다. 본론부터 꺼내면 질문은 아래의 내용입니다. JPA 강의를 듣기 전 Spring 에 대한 지식이 있어야 JPA 강의를 듣기 수월할까요 ? 아니면 Spring 과는 상관없이 JPA 독립적으로 공부가 가능한가요 ? 만약 Spring 을 알아야 한다면 순차적으로 Spring ----> JPA 순으로 공부를 하려고 하고, 아니라면 Spring 과 JPA 진도를 함께 나가려고 합니다. Spring 사전지식이 필요하다면 현재까지 나온 Spring 강의를 전부 수강 후 듣기를 권장하시는지 아니면 ex) Spring MVC2 까지 강의를 들은 이후부터 JPA 강의를 들어도 되는지 등 현재 나온 강의를 기준으로 설명 부탁드립니다. 급하게 진도를 나가기 보다는 기초를 탄탄히 하며 공부하고 싶어서 질문드렸습니다. 감사합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
값이 맞게 잘나오는데 왜 오답인건가요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결15일간의 빅데이터 파일럿 프로젝트
Specify Hosts 단계 질문있습니다
안녕하세요여기서 저 체크박스 클릭이 안됩니다! 저는 처음에 VM 2개로 여기까지 진행했다가 고사양에 맞는거 같은데 3개로 해도 되려나 해서 Virtual box에서 서버를 닫고 삭제(하드웨어상 삭제는 안했어요) 후 VM3으로 다시 추가하여 3개를 전부 실행시킨 후 여기까지 진행했습니다. 또 http://server01.hadoop.com:7180/에 접속할 때 보안오류떠서 https://를 빼고 접속했습니다. 도와주세요!
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
당첨자 : {0}
당첨자 : {0} 은 sample 을 활용해서 뽑은 하나의 문자열이잖아요? 그런데 0은 무엇인가요? 그저 하나의 리스틀 뽑기 위해서 사용되는 임시적인 숫자 인가요? 문자열 처리 강의에서 문자열 포맷 강의 부분들을 보면 그 때는 print("나는 {age}살이며, {color}색을 좋아해요.".format(age =20, color="빨간")) 이라고 설정을 해서 풀었는데 이번에는 앞에 {0}의 값과 뒤에 포맷에서 나오는 값들이 상이해서 이해하기가 어렵습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문드립니다. jar파일 복사방법.
jar파일만 복사해서 실행하면 된다는 내용에서, jar파일 어떻게 복사하나요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
pv와 pvc에 대한 궁금증을 질문드립니다. :)
1. spec.capacity.storage 와 spec.accessModes가 동일할시에 자동으로 연결 시켜준다고 강의에서 확인하였습니다. 그런데 제가 본 다른 글중에서 labelSelect 로 선택하는 경우도 있고, stoarage의 양이 pv가 pvc보다 더 높은경우도 보았습니다. ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: myclaim spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 8Gi storageClassName: slow selector: matchLabels: release: "stable" matchExpressions: - {key: environment, operator: In, values: [dev]} ``` pv와 pvc가 연결되는 경우가 사실 여러가지가 있는건가요? 2. 아마 storageClass를 사용하지 않을때는, pvc에서 spec.storageClassName을 ""로 명시하는 경우가 있는것같습니다. 그 경우는 ""로 명시하지 않을경우, 기본 스토리지 클래스가 잡혀서 PV가 없어도 자동으로 생성이 되어서 그런걸까요? 3. 기본 스토리지 클래스는, 제가 설정한적도 만든적도 없는데, 언제 어떤것이 만들어 진건가요? 4. 그리고 storageClass를 사용하지 않는 경우에도, Pv와 pvc에 storageClass를 명시하는 경우도 보았는데, 이 경우는 어떤 경우일까요? 항상 강의 잘보고 있습니다. 감사합니다. :)
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
화면이 까맣게 나오고 소리만 나옵니다.
실행 환경 mac m1 크롬입니다. 어떤 문제일까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동,3강 강좌에 질문있습니다.
1. 지금 타일별로 정수형(int)으로 이동하고, 맵도 이동가능한 지역,불가능한 지역 0,1 정수형(int)으로 따로 값을 저장해서 처리하고 있는데 만약에 실수형(float)으로 구현할때는 어떤식으로 구현하나요? 1칸식 딱딱하게 움직이는거보다 좀더 세밀하게 움직이고 충돌처리하는 프로젝트는 클라을 믿고 서버에 위치값만 보내야만 할까요? 그게 구현하기 편하긴 하지만 어떻게 구현하는지 궁금하네요 2. 기본적으로 유니티를 써봐서 3강 유니티 강좌는 빼고 듣고 있습니다. 7강좌 오니까 따로 코드를 짜놓으신게 있으시더군요. 코드를 보니까 전체적인 흐름 몇몇 코드는 왜이렇게 했는지 코드 의도? 것도 잘 모르겠더라구요, 생소한 문법도 몇몇 보이고 실무기준으로 코드를 만드시니 비경험자 입장에서는 조금 이해학 어렵네요 3강을 들어보는게 좋을까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
email로 고양이를 찾는 것이 아닌 ObjectId로 찾아야 할때...
강의에서는 email을 기준으로 고양이를 쿼리하는데요. 만약 ObjectId로 쿼리를 할 때 어떤 타입을 지정해줘야 할까요? 똑같이 string을 지정해줘야 하는지 아니면 다른 방법이 있는지 궁금합니다.
-
미해결웹 게임을 만들며 배우는 React
얕은복사와 깊은 복사에 대해서 질문해요
1. 만약 const num= [a: 1, b: 2] 처럼 주어질 때 const cloneNum = num 이와 같이 그냥 할당하는 경우는 num, cloneNum 둘 다 동일한 주소값을 바라보고 있으므로 (얕은 복사가 아닌)참조관계 라고 하나요? [여태 이런 경우는 얕은 복사로 이해했거든요..그래서 불변성을 지키기 위해 전개 연산자(...) 같은 걸 사용해서 깊은 복사를 해야 한다고 (다른 곳에서)배웠던 거 같아서요.그리고 속성이 기본값이 아닌 참조 타입인 경우1차 깊은 복사만, 내부 속성(2차 깊은 복사)까지 복사되려면 immer같은 라이브러리등을 사용해야 한다고]2. 얕은복사는 최상위 객체만 기존 객체와의 참조 관계를 끊는 (내부는 아직 기존 객체의 주소값을바라보는 ) 걸 말하고 깊은 복사는 내부의 속성들(내부 속성이 객체 또는 배열)까지 참조 관계가 끊어진 상태를 말하나요?3. 그럼 저기 num 배열을const cloneNum2 = [...num]; 처럼 하면 내부 속성은 객체 또는 배열이 아니니 깊은 복사가 되는 건가요? 4. 추가로 값인 경우 예를 들어서let str = 'hello';let cloneStr = str 이렇게 할당하게 되면 기본값은 그냥 깊은 복사가 되는 건가요? 제가 질문을 잘못해서 죄송해요;;얕은복사, 깊은 복사의 의미가 애매해서 질문했어요 ㅜㅜ