묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
failed to lazily initialize a collection of role 에러질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러@RestController @RequestMapping("/api/members") @RequiredArgsConstructor @Slf4j public class PetController { private final PetService petService; @PostMapping("/pets") @PreAuthorize("isAuthenticated()") public ResponseEntity<Long> createPet( @RequestBody PetCreateRequestDto petCreateRequestDto, @AuthenticationPrincipal PrincipalDetails principalDetails){ Member member = principalDetails.getMember(); Long savedId = petService.addPetToMember(petCreateRequestDto, member); return ResponseEntity.ok(savedId); } } 서비스@Service @RequiredArgsConstructor public class PetService { private final PetRepository petRepository; @Transactional public Long addPetToMember(PetCreateRequestDto request, Member member) { Pet pet = Pet.builder() .nickname(request.nickname()) .gender(request.gender()) .age(request.age()) .photoUrl(request.photoUrl()) .description(request.description()) .likesCount(0) .region(request.region()) .neighborhood(request.neighborhood()) .build(); pet.setPetOwner(member); Pet savePet = petRepository.save(pet); return savePet.getId(); } }연관관계 편의 메서드(Pet 엔티티에 있음)public void setPetOwner(Member member){ this.member = member; member.getPets().add(this); // 해당 코드에서 오류발생 }해당 코드에서 failed to lazily initialize a collection of role: com.gdsc.petwalk.domain.member.entity.Member.pets: could not initialize proxy - no Session가 발생하는 이유가 뭘까요?제가 하고싶었던 건 member를 먼저 만들고, 1:N에서 N쪽인 pet에 member를 add해주고 save하면 될거라 생각했는데 아무리 생각해봐도 모르겠네요... Pet에서 Member는 @ManyToOne(fetch = FetchType.LAZY)입니다
-
미해결김영한의 실전 자바 - 중급 1편
정적 중첩 클래스 개념 질문
'정적 중첩 클래스가 인스턴스에 속하지 않는다'는 뜻은 static 변수가 인스턴스에 속하지 않는다와는 다른 의미인게 맞을까요? 즉, static 변수는 인스턴스에 속하지는 않지만 해당 클래스에 포함됩니다. 그러나 정적 중첩 클래스는 인스턴스에 속하지 않을 뿐만 아니라 해당 클래스(바깥 클래스)와 무관하다고 하셔서 질문드립니다.정적 중첩 클래스 vs 내부 클래스가 static 변수 vs 인스턴스 변수와 같이 둘 다 클래스에 포함되지만 static 변수는 인스턴스에 포함되지 않는다는 뜻인지, 아니면 정적 중첩 클래스가 바깥 클래스에 포함되지 않는, 바깥 클래스와 전혀 무관한 클래스인지 알고 싶습니다.
-
해결됨김영한의 실전 자바 - 중급 1편
래퍼 클래스 - 참조형 기본형 비교
public class WrapperClassMain { public static void main(String[] args) { Integer i = new Integer(10); Integer in = new Integer(10); Integer integerObj = Integer.valueOf(10); //-128~ 127 자주 사용하는 숫자 값 재사용 System.out.println("내부 값 읽기"); int intValue = i.intValue(); System.out.println(intValue); System.out.println(i == intValue); //true System.out.println(i == integerObj); //false System.out.println(i == in); //false System.out.println(in == intValue); //true } }래퍼 클래스는 인스턴스의 참조값을 비교한다고 했는데, (i==intValue) 이 부분에서 참조형과 기본형을 비교하는 부분에서는 왜 true가 나오나요?
-
미해결김영한의 실전 자바 - 중급 1편
static 키워드 관련 질문 드립니다.
안녕하세요. static 키워드 관련 질문드립니다.class 안에 static 으로 변수를 선언하면서비스 전체에서 공통으로 사용한다고 이해했습니다.static class는 서비스 전체 공통이 아니고 독립적으로 생성할 수 있는데요static 이라는 키워드가 서비스 전체에서 사용한다는 의미가 있는게 아닌건가요? 변수와 클래스 앞에 static 이 붙은 경우에 차이점에 대해서 조금더 설명해주실 수 있을까요?
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 10. try - with - resources
질문입니다!상황 1 .우선 NetworkClientExceptionV5는 RuntimeException을 상속 받은 상태입니다.public class NetworkClientExceptionV5 extends RuntimeException { public NetworkClientExceptionV5(String message) { super(message); } }그러면 NetworkClientExceptionV5를 상속받은 ConnectException과 SendException도 RuntimeException이 되는 거구요.public class ConnectExceptionV5 extends NetworkClientExceptionV5 { private final String address; public ConnectExceptionV5(String address, String message) { super(message); this.address = address; } public String getAddress() { return address; } }public class SendExceptionV5 extends NetworkClientExceptionV5 { private final String data; public SendExceptionV5(String data, String message) { super(message); this.data = data; } public String getData() { return data; } } 상황 2 .그리고 NetworkClientV5는 AutoCloseable을 구현했습니다. import exception.ex5.exception.ConnectExceptionV5; import exception.ex5.exception.SendExceptionV5; public class NetworkClientV5 implements AutoCloseable { private final String address; private boolean connectError; private boolean sendError; public NetworkClientV5(String address) { this.address = address; } public void connect() { if (connectError) { throw new ConnectExceptionV5(address, address + " 서버 연결 실패"); } // 연결 성공 System.out.println(address + " 서버 연결 성공"); } public void send(String data) { if (sendError) { throw new SendExceptionV5(data, address + " 서버에 데이터 전송 실패 : " + data); } // 전송 성공 System.out.println(address + " 서버에 데이터 전송 : " + data); } public void disconnect () { System.out.println(address + " 서버 연결 해제"); } public void initError(String data) { if (data.contains("error1")) { connectError = true; } if (data.contains("error2")) { sendError = true; } } @Override public void close() throws Exception { System.out.println("NetworkClientV5.close"); disconnect(); } } ==질문입니다!!==NetworkServiceV5에서public class NetworkServiceV5 { public void sendMessage(String data) { String address = "http://example.com"; try (NetworkClientV5 client = new NetworkClientV5(address)) { client.initError(data); // 추가 client.connect(); client.send(data); } } }try (NetworkClientV5 client = new NetworkClientV5(address))에서 컴파일 오류가 납니다.client에서 올라오는 예외들은 다 RuntimeException이므로 따로 throws를 안 해줘도 되는데 왜 해결하려고 하면 throws를 선언하거나 catch를 해야한다고 하는 건가요?RuntimeException은 예외를 throws 선언없이 자동으로 밖으로 던지기에 catch를 안 해도 상관이 없을텐데 왜 alt + enter을 누르면 throws 선언과 catch를 해야만 된다고 하는 건지 이해가 가지 않습니다. 제가 생각하는 건 이런식으로 흘러간다고 생각했습니다.main()에서 (error1 | error2)를 입력 받음 -> sendMessage를 호출 -> sendMessage에서 코드 진행 -> (client.connect | client.send)를 만나서 NetworkClientV5에 들어감 -> (ConnectException | SendException)을 터트림 -> NetworkClientV5에서 예외를 밖으로 던짐 (런타임이라서 throws 선언 안 해도 던져짐) -> NetworkService로 예외가 날라옴 -> 여기서도 처리가 불가능 하니, 예외를 밖으로 던짐 (여기서 throws 선언을 안해도 던져져야 한다고 생각함. 날아온 예외는 RuntimeException이기 때문에) -> main으로 예외가 넘어옴 -> main에는 catch (Exception e)가 있어서 예외를 잡고 정상흐름으로 돌아옴. 마지막은 메인메서드 입니다!import exception.ex5.exception.SendExceptionV5; import java.util.Scanner; public class NetworkmainV5 { public static void main(String[] args) { NetworkServiceV5 service = new NetworkServiceV5(); Scanner scanner = new Scanner(System.in); while (true) { System.out.print("전송할 문자 : "); String input = scanner.nextLine(); if (input.equals("exit")) { break; } try { service.sendMessage(input); } catch (Exception e) { exceptionHandler(e); } System.out.println(); } System.out.println("프로그램을 종료합니다."); } // 공통 처리 예외 private static void exceptionHandler(Exception e) { System.out.println("사용자 메시지 : 죄송합니다. 알 수 없는 문제가 발생했습니다."); System.out.println("==개발자용 디버깅 메시지=="); // 스택 트레이스 출력 e.printStackTrace(System.out); // 스택 트레이스 출력 System.err //e.printStackTrace(); // 필요하면 예외별로 별도의 추가 처리 가능 if (e instanceof SendExceptionV5 sendEx) { System.out.println("[전송 오류] 전송 데이터 = " + sendEx.getData()); } } }
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
인텔리제이 명령어 창에 persist() 및 수정 동시에 하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 명령어 창에 persist() 및 수정 코드 동시에 기입한 경우 2. 명령어 창에 수정 코드만 기입한 경우 위와 같이 persist()와 수정을 동시에 한 경우는 저장 쿼리만 나갈 뿐더러 실제 데이터베이스에도 수정된 결과가 반영이 되지 않은 것을 알 수 있었습니다하지만 수정 코드만 적은 경우는 select 및 update 쿼리가 올바르게 나갈 뿐더러 데이터베이스에도 수정된 결과가 잘 반영이 되어있는 것을 알 수 있었습니다이렇게 동작한 이유가 정확히 어떤 매커니즘으로 이렇게 된 것인지 궁금합니다 !
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
강의 스트리밍 에러
강의가 스트리밍의 멈춤 현상이 심각한데, 인프런에서 해결을 못해주고 있습니다. 스트리밍이 10초분량이라도 여유를 두고 들어와야되는데, 딱 멈춰버립니다. 환불을 해준다고 얘기하는데, 너무 답답합니다.시크릿 모드에서는 들어오는데, 일반 모드에서 안들어 옵니다.시크릿모드는 계속 로그인을 신경써야하는 거라서 너무 화가 납니다. 한 챕터의 강의는 파일 전체를 로딩후에 뿌려주면 되는데, 스크롤 따라서 스트리밍 여유가 따라서 줄어듭니다. 그거 해달라는게 무리한 요구인가요? 강의 파일을 다 다운받아서 보던지해야하는 건가요?
-
미해결실전! Querydsl
application.yml 분리 이유에 대해 궁금합니다.
영한님이 말하시기에 자기는 application-local, dev, 운영 이렇게 나누신다고 하셨습니다. 당연히 나누어야 하는 것에 동의합니다. 하지만 왜 IntelliJ 내에서도 나누어야 하는지 궁금합니다 . 그냥 저는 local yml 만 인텔리제이에 두고 dev yml 은 따로 팀 공동 노션에 보관하는데 그걸 intelliJ 내에서 돌리는 일이 거의 없었던 것 같습니다. 왜 intelli J 내에서 따로 운영 yml 이나 이런 걸 보관하는 건가요??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 시간초과가 나는지 모르겠습니다.
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class 매출액의_종류 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int k = scan.nextInt(); int[] arr = new int[n]; for(int i=0;i<n;i++){ arr[i] = scan.nextInt(); } System.out.println(mySol(n,k,arr)); } private static String mySol(int n, int k, int[] arr) { String result = ""; Map<Integer,Integer> map = new HashMap<>(); for(int i=0;i<k-1;i++){ map.put(arr[i],map.getOrDefault(arr[i],0) + 1); } int lt = 0; for(int rt=k-1;rt<n;rt++){ map.put(arr[rt],map.getOrDefault(arr[rt],0) + 1); result += map.size() + " "; map.put(arr[lt], map.get(arr[lt]) - 1); if(map.get(arr[lt]) == 0) map.remove(arr[lt]); lt++; } return result; } }
-
미해결김영한의 실전 자바 - 중급 1편
오타 제보
안녕하세요. 영한님 불변객체 문제와 풀이에서 클래스 이름에 오타가 있어 제보합니다.문제 설명`MyDate` 클래스는 불변이 아니어서 공유 참조시 사이드 이펙트가 발생한다. 이를 불변 클래스로 만들어라.새로운 불변 클래스는 ImmuableMyDate 로 이름 지으면 된다.ImmuableMyDate -> ImmutableMyDate새로운 실행 클래스는 ImmuableMyDateMain 으로 이름 지으면 된다. ImmuableMyDateMain -> ImmutableMyDateMain 감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 질문
인텔리제이 설정 방법에 대해 문의합니다.조건에 해당하지 않는 코드가 아래처럼 보이는데, 이렇게 보이는걸 없애고 싶은데 어떻게 해야할까요?
-
해결됨김영한의 실전 자바 - 중급 1편
string 클래스 -기본 . println char[] 출력 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 듣다가.. 영한님 말을 들어보니까강의 도중에 사진 처럼..안에서 루프를 돌리면서 출력 하겠죠 라고 하였는데...갑자기 좀 햇깔리네요.println() 메서드에서 char[] 채얼 배열이 들어가면for문을 통해서(아니면 whil문? )순차적으로 돌려주면서 값이 나온다고 생각해도 되냐요?답변 부탁 드립니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
7장 스캐너 문제와풀이3
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 이 문제에서는 Scanner input = ~을 사용하였는데 그 전의 문제들에서는 Scanner scanner를 사용했는데input과 scanner는 무슨 차이인가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
똑같이 작성하고 실행하는데 런타임에러가 발생해요
import java.util.*; class Main { static String answer = "NO"; static int n, total = 0; boolean flag = false; public void dfs(int L, int sum, int[] arr) { if(flag) return; if(sum > total/2) return; if(L == n){ if(total/2 == sum){ answer = "YES"; flag = true; } }else{ dfs(L + 1, sum + arr[L], arr); dfs(L + 1, sum, arr); } } public void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); n = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++){ arr[i] = sc.nextInt(); total += arr[i]; } T.dfs(0, 0, arr); System.out.println(answer); } }복습 차원에서 똑같이 코드를 실행하는데 런타임에러가 자꾸 발생하는 이유를 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 연관관계를 짓는 기준
안녕하세요. 연관관계를 맺으면서 선생님께서 양방향 연관관계는 비즈니스 로직이 복잡해지는 경우가 많으니 다대일 단방향으로 관계를 맺고 개발 진행중에 양방향으로 연관관계를 가져야할 필요성을 느낄 때 그때 양방향 연관관계를 매핑하라고 하셨습니다. 그 필요성에 대해 궁금해서 질문드립니다.게시글과 댓글의 관계를 댓글(N) 게시글(1) 로 다대일 단방향으로 관계를 맺었고, 개발을 하다가 게시글을 조회할 때 관련된 댓글들도 한번에 가져오기 위해 페치조인을 사용하려고 합니다. 그런데 조인을 하려면 게시글에 댓글에 대한 참조가 없어 조인을 할 수 없어 양방향 연관관계를 맺어줘야 하나 생각했습니다. 제가 생각한 양방향 연관관계를 맺어야하는 필요성이 이런 경우가 맞을까요?양방향 연관관계를 맺는 필요성에 대한 기준이 있는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인프런 워밍업 관련 문의
안녕하세요 워밍업 1기 신청했는데 따로 연락이 없어서 문의 드립니다.따로 과제 관련 연락은 없고 그냥 강의만 따라 가면 되는지 아니면 별도 메일이나 카카오톡 연락을 받아서 같이 하는건지 여쭤보고 싶습니다....
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
cpu 개수만큼 실제로 할당되는지.. 궁금합니다.
강의에서 cpu 개수만큼 데이터 생성하고 병렬처리 하셨는데요.실제로 cpu 개수만큼 java 런타임에 모두 할당이 되나요? https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html여기 문서보니까, 자바에 할당된 cpu 개수를 의미하는거 같기도하고요.. chatgpt 는 운영체제에 할당된걸 인식하는거라고 하는데 뭔지 잘모르겠네용
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 클래스 개발 오류
엔티티 개발 강의를 듣다가 너무 오류가 많이 나서 질문 드립니다. 혼자서 라이브코딩하다가 실행 중 오류가 나길래 여러 방법을 동원해보다가,결국 강의 자료에 있는 코드를 복붙해보았지만 이 역시 실패하였습니다. 구글링도 해보고 강의자료도 복붙하고 하여 코드가 많이 난잡합니다.다른 분들은 이렇게까지 오류가 나지는 않는 것 같은데, 환경변수 설정의 문제인지 잘 모르겠습니다.무엇이 문제인지 알려주시면 감사하겠습니다. -추가-엔티티코드를 전부 작성하고 H2 DB도 실행 한 후에 메인코드를 실행할때에,위와 같이 여러가지 오류가 나옵니다. https://drive.google.com/file/d/1_Xgp_RM9xfVW2vuqd4Yk7ZdDhAEy6nwh/view?usp=drive_link
-
해결됨김영한의 실전 자바 - 중급 1편
불변 객체 코드 리뷰 좀요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.불변객체 예제 중 MemberMainV2를 좀 배껴서손님이 커피를 주문하고, 커피를 바꾸는 것을 응용 해봣는데요.(문제와 풀이에서 커피? 이야기 가 나와서 힌트를 얻어 작성함.)이렇게 해도 되는지, 알고 싶어서 도움을 구합니다..코드 리뷰좀 부탁드려도 될까요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 기본편
상속 관계에서 기본생성자 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상속 관계에서 protected 생성자가 아닌 private으로 문제와 풀이 예제를 진행한 이유가 있을 까요?