묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 데이터 JPA
양방향 @OneToMany 에서의 단순 delete(Instance) 에 대해 질문있습니다.
안녕하세요! 정말 오랜만에 질문 올립니다. 다름이 아니라 아래와 같이 Parent, Child 가 있고 이 둘을 양방향으로 맺었을때@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST) private final Set<Child> children = new HashSet<>(); public Parent(String name) { this.name = name; } public void addChild(Child... childs) { for (Child c : childs) { c.addParent(this); children.add(c); } } } @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Child { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id", nullable = false) private Parent parent; public Child(String name) { this.name = name; } public void addParent(Parent parent) { this.parent = parent; } }아래와 같이 테스트코드를 짜면@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @DataJpaTest(showSql = false) class ParentRepositoryTest { @Autowired ParentRepository parentRepository; @Autowired ChildRepository childRepository; @Rollback(false) @Test @DisplayName("delete, deleteAll, deleteAllInBatch 를 비교한다.") public void differenceBetweenDeleteAllAndDeleteAllInBatch2() { Parent parent1 = new Parent("부모 1"); Child child1 = new Child("자식 1"); Child child2 = new Child("자식 2"); Child child3 = new Child("자식 3"); parent1.addChild(child1, child2, child3); parentRepository.save(parent1); Parent parent = parentRepository.findAllWithChildren("부모 1").get(); parent.getChildren().remove(child1); childRepository.delete(child1); } }parent.getChildren().remove(child1); 의 존재 여부에 따라 delete 쿼리가 나갈지 말지 결정되더라구요.이거에 대해서 고민을 해봤습니다. 제가 내린 결론은"하나의 tx 에서 Parent 가 속한 Child 들 중 하나를 childRepository.delete(Child) 혹은 deleteAll() 을 통해 지우려할때, Parent 의 Child 의 컬렉션에서 지울 Child 를 먼저 remove 하여 부모 자식간의 연결관계를 끊어주는 작업이 선행되어야 한다. 그 이유는 삭제할 Child 를 repository 에서 지우기만 하면 Parent 에 남아있는 컬렉션에는 지워진 데이터가 카컬렉션에 남아있어 로직에 문제가 발생할 수 있기 때문이다. 그래서 Parent 에서 지울 Child 를 먼저 remove 를 사용하지 않으면 delete 쿼리가 나가지 않는 것이고, 먼저 remove 를 하면 delete 쿼리가 나가는 것이다"라고 결정지었습니다. 아무래도 JPA 에서 최고 권위자인 김영한강사님의 조언이 필요합니다. 감사합니다.(고아객체 제거인 orphanRemoval 은 일부러 사용하지 않았습니다. 순수 delete 에서만 그 원리를 알고싶습니다. 항상 무지성으로 querydsl 혹은 in 절로 지우기만해서 근본을 까먹은거같네요 ㅠㅠ)
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
section4 - chapter4.ts 사용자 정의 타입가드
// 1function isDog(animal: Animal) animal is Dog { return (animal as Dog).isBark !== undefined;}// 2function isDog(animal: Animal) animal is Dog { return "isBark" in animal;}수업에서는 1번을 알려주셨는데 코드를 2번과 같이 작성하지 않은 이유가 있을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
csrf Post 요청 시 에러
안녕하세요.csrf.http 파일로 /csrf post 방식에 헤더에 값을 넣어서 테스트 중인데요.강사님이 말씀해주신 방법으로 해도 테스트가 진행이 안되서 질문드립니다.login 페이지에 생성된 토큰 값을 요청 시에 같이 전달했는데 왜작동이 되지 않을까요??### GET request with a header GET http://localhost:8080 Content-Type: application/json ### POST request with a header POST http://localhost:8080/csrf Content-Type: application/json ### POST request with a header POST http://localhost:8080/csrf Content-Type: application/x-www-form-urlencoded _csrf = GQUnQECQsPrRDBd53iPaRAYfoKozqh0dZfg91MeDiOKw3OOtKjUQcHb00578aiNN6A7ufTEpjZMAyXswV85b4KSyutqB7IeY ### Send GET request with json body GET http://localhost:8080/csrfToken Content-Type: application/json위는 csrf.http 파일입니다.강사님은 요청이 성공적으로 되는데 저는 똑같이 로그인 페이지가 계속 나오더라구요..
-
미해결스프링 핵심 원리 - 기본편
수동 빈 등록에서의 의존관계 주입
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 해당 강의에서 컴포넌트 스캔으로 빈을 등록할 때 의존 관계를 주입하는 방법 중 생성자 주입, setter 주입, 필드 주입, 일반 메소드 주입을 배웠습니다. 그렇다면, 아래 코드와 같은 수동 빈 등록에서//AppConfig.java //memberRepository 빈은 등록되어 있다고 가정 @Configuration public class AppConfig { //1. 이렇게 하면 생성자 주입 @Bean public MemberService memberService1(){ return new MemberServiceImpl(memberRepository()); } //2. 이렇게 하면 setter 주입 public MemberService memberService2(){ MemberServiceImpl memberService = new MemberServiceImpl(); memberService.setMemberRepository(memberRepository()); return memberService; } //3. 필드 주입은 어차피 setter가 필요하므로 생략 //4. 이렇게 하면 일반 메소드 주입 public MemberService memberService3(){ MemberServiceImpl memberService = new MemberServiceImpl(); memberService.init(memberRepository()); return memberService; } }각 번호대로 작성하면 되나요?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
Vitis tool 관련해서 질문 있습니다.
안녕하세요 맛비님. vitis tool로 혼자 공부하며 이것저것 하다 궁금한게 생겨서 질문 글 남기게 되었습니다.이상하게 Vitis에서는 txt 파일이 읽히지 않습니다.. 안녕하세요 맛비님. vitis관련해서 질문이 있습니다. - 인프런 (inflearn.com)제가 방법을 찾아보다 이전에 다른분께서 질문하셨던 내용을 찾아서 블로그 보며 공부를 하려 했는데 블로그가 들어가지지 않아서 이렇게 한번 더 질문글을 남기게 되었습니다.강의외에 질문을 드려서 죄송합니다.. 항상 강의 돌려보며 공부 열심히 하고 있습니다!! 감사합니다!!
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
질문있습니다.
안녕하세요 M2 1주차 강의(섹션 1. 클라/서버 프레임워크와 이동 동기화)를 들어봤는데 서버와 클라 강의가 너무 문외한이라 환불하고 M1강의를 살려고 했는데 이미 자료를 다운받아서 환불이 불가능 하더라고요.질문1. 2주차부터는 전투, AI, 자동사냥등 유니티 게임 기능구현이 주된 내용같은데 2주차부터 제대로 들으면 될까요? 질문2. 1주차 내용이 설명이 없어 이해가 안되는데 이에 맞는 강의추천이나 문서 알려주실 수 있나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
교안관련 문의드립니다
오늘 유튜브에서 우연히 이 강의를 알게되어서목차 내용보고 확신이 들어 바로 구매 하였습니다.실기시험까지는 얼마 남지 않아서 열심히 해보려고합니다.근데 강의 듣기전에 교안이 있으면인쇄를 해놓고 영상 재생해보려고 하는데 어디에도 교안은 따로 없는거같아서요!!원래 교안이 없는것이고,그냥 영상만 보고 쭉 이해하면 되는것인가요?
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
패킷모아보내기 관련 해서 질문 있습니다.
안녕하세요 루키스님^^루키스님 덕분에 고퀄 강의를 또 듣게 되어 정말 무궁한 영광입니다.프로젝트가 어떻게 완성되어 갈지 흥미진진하고 너무 기대됩니다. ㅎㅎ들뜬 마음을 부여잡고 복습을 하다가 문득 라이브에서는 캐치를 못한 부분이 있어서 바쁘신 와중에 질문을 올리게 되었습니다ㅜ다름이 아니고 기존 강의에서는 서버 프로젝트에서 패킷모아보내기 관련 코드가 있던 것으로 기억합니다.이번에는 해당 부분이 보이질 않는 것을 보니 일부러 해당 부분을 빼놓으신 것 같은데 혹시 이번 프로젝트에서는 패킷 모아보내기 작업은 따로 안하실 예정이신가요?
-
미해결캐글 실습으로 배우는 데이터 사이언스
수료증 발급 문의
안녕하세요.강의 수강 완료 후 수료증 발급에 대해서 문의드립니다.절차가 어떻게 되는지, 수료증 어디서 받아야하나요?회사 제출 용도로 필요하기에 문의드려요
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
채팅 클라이언트는 누구와 연결되는지
안녕하세요 강사님복습을 하다가 궁금한 점이 3가지 정도 생겨 질문드립니다.1) 채팅 유저가 최초 접속을 하면컨트롤 서버에 접속가용 가능한 채팅 서버의 주소를 응답받음해당 채팅 서버와 소켓 연결이런 흐름으로 이해했는데 맞을까요?프론트 단 코드에서는 채팅 서버와 직접 소켓 연결하는 코드만 있어서 질문드립니다. 2) 사용자가 채팅 시, 채팅 서버가 도중에 다운되면 사용자는 컨트롤 서버에 재연결 시도하여 가용가능한 채팅 서버를 재할당 받는 것인가요?3) 컨트롤 서버에 api 주소 중 /server-list 라는 api 가 있던데 해당 API 는 누가 호출하는 것인가요? 가용가능한 서버 리스트를 내려주는 API 로 이해했는데, 그럼 채팅 사용자가 해당 API 를 직접 찌르는 걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
기본 생성자
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Item 클래스의 기본 생성자를 만드는 이유가 무엇인가요?
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
h2 console 뭔짓을 해봐도 안되네요,..
This application has no explicit mapping for /error, so you are seeing this as a fallback.404 뜹니다.. spring.application.name=sbbspring.h2.console.enabled=truespring.h2.console.path=/h2-consolespring.datasource.url=jdbc:h2:~/localspring.datasource.driverClassName=org.h2.Driverspring.datasource.username=saspring.datasource.password=application.properties 입니다.. 뭐가 문제일까요 ㅠ
-
미해결
유린이를 도와주세요
유니티 런 하다가 뭐 잘못건드려서 시점이 이상하게 됐어요 원래 저렇게 넓게 시점이 보이지 않는데 제가 우클릭 해서 이동하게 되면 공간이 저렇게 잘려서 보이더라구요 마치 존나 큰 눈으로 관찰하는것처럼요 어떻게 정상으로 되돌릴 수 있나요?
-
미해결
3D 모델러와 언리얼 개발자 협업 툴 추천
3D 모델러와 언리얼 개발자가 서로 작업한 파일(fbx, glb 등)을 공유할 때 어떤 툴 사용하시나요? 한번에 업로드 및 다운로드되는 용량이 적게는 20GB 에서 최대 100GB가 넘고,저희는 대용량 파일 업로드 이슈로 SVN + AWS EFS 사용하고 있습니다. 문제는 EFS 사용하는 비용이 점점 늘어나서 대안을 찾아야 하는데 더 나은 방법있으시면공유 부탁드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-P 질문드립니다.
안녕하세요 선생님.해당 문제를 다음과 같은 로직으로 풀어보았으나, 테스트케이스도 통과를 못하여 질문드립니다.a라는 배열에 순서별로 톱니바퀴들을 입력go() 함수를 통해, 시작점으로부터 좌우로 진행하며 회전방향 결정check 배열에 넣어둔 회전방향에 따라 진행 (0: 멈춤, -1:반시계, 1:시계)제출 링크입니다.http://boj.kr/b378ed26be3a436cbc7dbe705184aedd항상 좋은 강의 감사드립니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
다운로드 소스 코드 실행 방법 in 개발 환경 설정
다운로드 소스 코드 진행 방법 따라하는 중인데요,5:49 강의에는 overwrite 하겠냐고 뜨는데 저는 그렇게 안되고 안된다고만 뜹니다. 넘어갈 수 없는데 어떻게 하나요
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
virtualbox가 아닌 vmware에서도 강의 실습이 가능할까요??
안녕하세요, 이번에 vmware가 개인 대상으로 무료로 풀리게 되어 문의드립니다. virtualbox가 아닌 vmware에서도 강의 실습이 가능할까요??
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 부탁 드립니다!
수강 기간 연장 부탁드립니다..!한번 더 복습할 시간이 필요할꺼 같습니다..!
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
github에서 tabby config.yaml 위치가 어디일까요 ?
https://github.com/Eugeny/tabby/wiki/Config-file제가 못찾은건지 모르겠는데 이렇게만 있어서 config.yaml 위치가 어디인지 헷갈리네요 ㅠ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
strlen , strcpy
처음엔 strlen , strcpy 이런 스트링함수가 있으나,연습으로 직접 함수를 만들어쓴다고 생각하고, 커스텀함수와 직접만든 함수에도 저 함수를 사용하는 함수 2가지를 때에 따라 사용할랬더니 , 재귀함수호출은 사용하면안된다고,wrapping함수로 하라합니다. 그럼,실무에서 사용할땐.. 커스텀함수를 쓰거나,래핑함수형태로 쓴다고 생각하면 될까요? 아무래도 임시적인 확인용아니라면,메인함수에서 strlen , strcpy 를 쓸경우는 없을거같아서요.궁금해서 질문합니다.