묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현하는 연결 리스트4 - 제네릭 도입 코드 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용] package collection.link; public class MyLinkedListV3<E> { private Node<E> first; private int size; public void add(E e){ Node<E> newNode = new Node<>(e); if (first == null){ first = newNode; } else { Node<E> lastNode = getLastNode(); lastNode.next = newNode; } size++; } //추가 코드 public void add(int index, E e){ Node<E> newNode = new Node<>(e); if (index == 0){ newNode.next = first; first = newNode; } else{ Node<E> prev = getNode(index - 1); newNode.next = prev.next; prev.next = newNode; } size++; } @Override public String toString() { return "MyLinkedListV1{" + "first=" + first + ", size=" + size + '}'; } private static class Node<E>{ E item; Node<E> next; public Node(E item) { this.item = item; } //A->B->C이런모양으로 출력하고 싶어! @Override public String toString() { StringBuilder stringBuilder = new StringBuilder(); Node<E> x = this; stringBuilder.append("["); while (x != null) { stringBuilder.append(x.item); if (x.next != null) { stringBuilder.append("->"); } x = x.next; } stringBuilder.append("]"); return stringBuilder.toString(); } } } 위 코드에서 Node는 정적 중첩 클래스로서 MyLinkedListV3에 선언돼 있습니다. static은 바깥 클래스와 독립적이고 클래스레벨에 소속돼 있어 인스턴스에 따라서 static class가 바뀌는 일은 없다고 알고 있었습니다. 그런데 여기서는 바깥 클래스의 타입 매개변수 E가 정적 중첩클래스인 Node에 영향을 주어 Node의 item의 타입을 E로 만듭니다. 그러면 E가 Integer인 MyLinkedListV3, E가 String인 MyLinkedListV3가 있을 수 있다는 것인데 타입 매개변수가 도입된 정적 중첩 클래스는 정적 변수와 다르게 인스턴스에 영향을 받을 가능성이 있다고 생각돼서 다음과 같이 실험해봤습니다.아래 코드를 실행한 결과package collection.link; public class MyLinkedListV3Main { public static void main(String[] args) { MyLinkedListV3<String> stringList = new MyLinkedListV3<>(); MyLinkedListV3<Integer> intList = new MyLinkedListV3<>(); stringList.add("a"); stringList.add("b"); stringList.add("c"); String string = stringList.get(0); System.out.println("string = " + string); System.out.println(stringList); intList.add(1); intList.add(2); intList.add(3); Integer integer = intList.get(0); System.out.println("integer = " + integer); System.out.println(intList + " = " + stringList); } } string = a MyLinkedListV1{first=[a->b->c], size=3} integer = 1 MyLinkedListV1{first=[1->2->3], size=3} = MyLinkedListV1{first=[a->b->c], size=3}이 부분을 유의 깊게 봐주세요 System.out.println(intList + " = " + stringList);위 코드를 실행하면 intList, strList를 동시에 출력해도 잘 출력이 되고 서로 독립적인 클래스가 타입만 다른 상태로 선언된 것처럼 보입니다.의문점이 또 있습니다.MyLinkedListV3<Integer> intList2 = new MyLinkedListV3<>(); //을 main에 추가하고 System.out.println(intList + " = " + stringList + intList2); //위와 같이 intList2도 출력하면 MyLinkedListV1{first=[1->2->3], size=3} = MyLinkedListV1{first=[a->b->c], size=3}MyLinkedListV1{first=null, size=0}위와 같이 타입 매개변수를 inList와 intList2가 같은 Integer인 상황임에도 링크드 리스트안의 요소들을 공유하진 않습니다. 같은 타입 매개변수를 사용하는 인스턴스들 끼리는 같은 정적 중첩 클래스를 공유하는 줄 알았는데 이것도 아닌 것 같습니다. 타입 매개변수가 적용된 정적 중첩 클래스는 정적 변수와 다르게 인스턴스마다 서로 다르게 존재하는지 여쭙고 싶습니다. 마지막 제네릭 타입 안에서 Node<E> node = new Node<>();는 되고 new E();는 안되는 이유를 생각해봤는데 맞게 생각한건지 봐주셨으면 좋겠습니다.E는 단순히 컴파일 되기 전 타입을 선언하여 해당 타입의 안정성을 보장하기 위해 E가 String으로 선언된 상황이면 String전용 Node로 만들기 위해 들어간거고 이 영향은 컴파일단계에서만 미치며 컴파일 이후에는 전부 상한의 클래스로 대체된다. 하지만 상한 클래스로 예를들어 Object라고 대체되어 어떤 메서드의 return 값이 Object로 변하는 경우라도 컴파일러가 알맞게 이전의 E타입으로 다운캐스팅 해주니 문제 없는 것이다.하지만 인스턴스 E를 "생성"하는 것은 문제가 된다. 단순히 타입을 선언하는게 아니고 인스턴스 E를 생성해서 뭔갈 한다면 예를 들어 상한이 Object이고 Object의 이름모를 하위타입의 인스턴스를 생성하면 해당 타입의 메서드, 멤버변수를 전부 활용할 수도 있다는 것인데, E가 정확히 무엇일지 몰라서 컴파일러가 상한 타입으로 퉁친 상태인데, 상한 타입보다 하위의 타입의 인스턴스 메서드를 쓸 가능성은 당연히 없애는 것이 맞기 때문에 new E();도 못쓰는 것이고 E인스턴스의 메서드, 멤버 변수 정보도 당연히 모르니까 instanceOf도 못 쓰는 것이다.라고 결론을 내렸는데 괜찮을까요?
-
미해결실전! Querydsl
BooleanExpression 관련 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 강의 잘 보고 있습니다! 강의를 수강하다 몇가지 궁금한게 생겨 이렇게 질문 남깁니다.1. BooleanExpression - where 다중 파라미터 사용강의에서 강사님이 'where 다중 파라미터 사용'이라는 제목으로 이야기 하실 때 BooleanExpression을 소개하시는데 아래와 같이 구현하면 BooleanBuilder로도 where 다중 파라미터가 가능한 것 아닌가요??private List<Member> searchMember1(String usernameCond, Integer ageCond) { return queryFactory .selectFrom(member) .where(usernameBuilder(usernameCond), ageBuilder(ageCond)) .fetch(); } private BooleanBuilder usernameBuilder(String usernameCond) { if (usernameCond != null) { return new BooleanBuilder(member.username.eq(usernameCond)); } else return new BooleanBuilder(); } private BooleanBuilder ageBuilder(Integer ageCond) { if (ageCond != null) { return new BooleanBuilder(member.age.eq(ageCond)); } else return new BooleanBuilder(); }2. BooleanExpression 을 선호하시는 이유다음과 같이 BooleanExpression으로 allEq() 구현시 BooleanExpression은 추상클래스라 객체생성이 안되기 때문에 NPE가 발생할 수 있는데private BooleanExpression usenameEq(String usernameCond) { return usernameCond != null ? member.username.eq(usernameCond) : null; } private BooleanExpression ageEq(Integer ageCond) { return ageCond != null ? member.age.eq(ageCond) : null; } private BooleanExpression allEq(String usernameCond, Integer ageCond) { return usenameEq(usernameCond).and(ageEq(ageCond)); // NPE 조심 }반면 BooleanBuilder은 실제 클래스라 객체 생성이 되기 때문에 NPE도 방지가 가능합니다.private BooleanBuilder usernameBuilder(String usernameCond) { if (usernameCond != null) { return new BooleanBuilder(member.username.eq(usernameCond)); } else return new BooleanBuilder(); } private BooleanBuilder ageBuilder(Integer ageCond) { if (ageCond != null) { return new BooleanBuilder(member.age.eq(ageCond)); } else return new BooleanBuilder(); } private BooleanBuilder allBuilder(String usernameCond, Integer ageCond) { return usernameBuilder(usernameCond).and(ageBuilder(ageCond)); }이렇게만 보면 사실 BooleanExpression을 쓸 이유가 없어보이는데 BooleanExpression을 선호하시는 이유가 있으신가요??
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
예제코드 자바입니다
복습하면서 자바로도 풀어봤어요 필요하신분들 확인!!https://github.com/hyukjunkim1116/algorithm-master-in-2weeks
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
선생님 혹시 자바 공부나 개발에 대한 책 추천 해주실 수 있으십니까
현재 나온 자바 강의 모두 결제했지만 책으로도 병행하고 싶어서 여쭤봅니다 자바의 정석 같은 기본서보다 좀 더 깊게 들어갈 수 있는 책 추천 해주실 수 있으십니까
-
미해결김영한의 실전 자바 - 기본편
캐스팅 질문 입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 캐스팅 배우면서 헷갈리는 부분이 있어 문의 드립니다Parent poly = new Child();poly에는 Child의 참조값을 가지게 되는데 참조값을 가지고 자식 클래스에 접근을 할 수 없는 부분이 이해가 잘 안갑니다 ㅜㅜ참조값을 통해 해당 객체 메모리에 접근을 할 수있는데 왜 부모 클래스는 확인이 안되는건가요? 메모리에 접근을 해도 해당변수 타입만 확인을 할 수 있는건가용?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Future Vs. CompletableFuture
[질문 내용]강의 너무 잘 듣고있습니다. 요즘 실무에서는 Future 말고 CompletableFuture를 많이 쓰는걸로 아는데 이에 대한 강의는 없으신가요? 그리고 CompletableFuture 사용에 대한 의견도 궁금합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
메서드 선언부와 본문 간의 형변환
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 메서드 강의를 듣는 중 메서드 선언부, 본문에 대해 궁금한 점이 생겨 여쭤보게 됩니다.메서드 선언부와 본문에 등장하는 메서드 타입, 파라미터 타입, 리턴 타입이 모두 같아야 한다고 강의 도중 말씀하신 것 같아 형변환 원리가 적용되나 싶어 인텔리제이로 실행을 해보니 말씀 그대로 하나라도 다르면 적용이 안되었습니다. 형변환 원리가 적용되지 않는 것이 확실한지 싶어 구글링하여 찾아보았는데 형변환 원리가 일부 적용된다고 하여서 질문을 작성하게 되었습니다. 메서드 선언부(본문) - 호출부 간에는 자료형이 달라도 형변환 원리가 적용되는 것은 이해가 되었는데, 메서드 선언부와 본문에 등장하는 변수 타입은 형변환 원리가 적용되지 않는게 맞을까요 ?좋은 강의 제공해주셔서 항상 감사드립니다 !!
-
미해결김영한의 실전 자바 - 기본편
final 메서드 오버라이딩
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오버라이드 자체가 부모의 메서드를 재정의 하는 것 즉 오버라이드 하면 부모 메서드에 영향을 주는게 아닌데 final을 사용 하지 못하는 이유는 설계 의도가 맞지 않아서 사용하지 못하는게 맞을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
서버 구동이 안됩니다.
1..2일차 영상 보면서...환경을 만드는데.... 서버 구동이 안됩니다.초초초보입니다....... A problem occurred configuring root project 'library-app'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
mokito관련 주의 문구
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]섹션 2-5 듣고 있습니다 MemberRepositoryTest를 실행하면 test는 패스 되고 다른 기능들도 잘 동작하지만 주의 문구가 뜹니다 프로그램에 지장이 있는걸까요? 어떻게 해결해야 할까요? Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3WARNING: A Java agent has been loaded dynamically (C:\Users\shina\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.15.11\a38b16385e867f59a641330f0362ebe742788ed8\byte-buddy-agent-1.15.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future release package jpabook.jpashop; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; @ExtendWith(SpringExtension.class) @SpringBootTest class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() 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()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); assertThat(findMember).isEqualTo(member); } }
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
2024년 1회 기출 23:10 질문 자바실행순서
Parent 클래스가 자료형Child 클래스가 생성자로 // 업캐스팅이름이 parent 인 객체를 만들었는데parent.x parent.y 를 했을경우 값이 어떻게 출력돼나요?변수x는 부모랑 자식에 둘다 있어서 모르겠습니다 상속을 받는 경우 , 기능(매서드)을 상속받고변수들은 어떻게 되는건가요?Static 처럼 타입형을 참조하는건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
데이터베이스 스키마 자동 생성
안녕하세요. 데이터베이스 스키마 자동 생성과 관련하여 질문드릴게 있습니다.DDL을 애플리케이션 실행 시점에 자동 생성하는것과 데이터베이스 스키마 자동생성하는것이 어떤 연관관계가 있는것인가요? 데이터베이스 스키마 자동 생성에 대해서는 자세한 설명을 해주시지않은거 같아서 질문드립니다.JPA에서는 DDL을 애플리케이션 실행시점에 자동으로 생성해서 테이블을 생성해주는데, 이때 엔티티클래스와 매핑정보를 바탕으로 CREATE TABLE 쿼리 내에서 데이터베이스 스키마인 테이블이름이나 컬럼의 데이터 타입이나 제약조건 등등을 자동으로 생성해주는것인가요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
이론 통합 요약본 sql과 조인 정리 페이지에서
ddl dml dcl 부분에서 dcl이 리보크랑 그란트가 들어가는걸로 아는데, tcl 부분이 나온거 같아 오타인지 문의드립니당
-
미해결자바 코딩테스트 - it 대기업 유제
집으로 이동 문제 코드
안녕하세요 강사님강사님께서 제시해준 답변 코드에서 의문이 있어서 질문드립니다.여기서조건절 if(nx <= 10001 && ch[0][nx] == 0){~를 보면 nx<=10001이 nx<10001이 되어야 되지 않나요?ch가 int[][] ch = new int[2][10001]; 이건데index out of bound 에러 날 것 같습니다. import java.util.*; class Solution { public int solution(int[] pool, int a, int b, int home){ int[][] ch = new int[2][10001]; for(int x : pool){ ch[0][x] = 1; ch[1][x] = 1; } Queue<int[]> Q = new LinkedList<>(); ch[0][0] = 1; ch[1][0] = 1; Q.offer(new int[]{0, 0}); int L = 0; while(!Q.isEmpty()){ int len = Q.size(); for(int i = 0; i < len; i++){ int[] cur = Q.poll(); if(cur[0] == home) return L; int nx = cur[0] + a; if(nx <= 10001 && ch[0][nx] == 0){ ch[0][nx] = 1; Q.offer(new int[]{nx, 0}); } nx = cur[0] - b; if(nx >= 0 && ch[1][nx] == 0 && cur[1] == 0){ ch[1][nx] = 1; Q.offer(new int[]{nx, 1}); } } L++; } return -1; } public static void main(String[] args){ Solution T = new Solution(); System.out.println(T.solution(new int[]{11, 7, 20}, 3, 2, 10)); System.out.println(T.solution(new int[]{1, 15, 11}, 3, 2, 5)); System.out.println(T.solution(new int[]{9, 15, 35, 30, 20}, 2, 1, 25)); System.out.println(T.solution(new int[]{5, 12, 7, 19, 23}, 3, 5, 18)); System.out.println(T.solution(new int[]{10, 15, 20}, 3, 2, 2)); } }
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
Thread Waiting 상태 관련 질문 드립니다.
Thread 가 Wating 상태로 변경될 때 java 에서 Object.wait() 혹은 Thread.join() 을 호출 한다고 스레드 생명주기와 상태 - 21:51에서 말씀 주셨는데 래퍼런스를 확인해보니 wait(), join() 이외에 LockSupport.park ()라는 동작도 있다고 적혀있습니다. 해당 동작은 어느시점에 이루어지는지 언제까지 대기상태를 유지하는지 궁금합니다 🙂
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
nextInt 함수 질문
문제와 풀이3-상품 가격 계산 위 문제 질문드립니다. 가격과 수량을 입력받을때, 사용자 입력이 "정수+개행문자"까지 들어가니까앞선 문제에서 알려주셨다시피nextInt함수는 정수값만 입력으로 가져가기 때문에 사용자입력에서 개행문자가 남아 빈문자가 다음 입력값으로 넘어가는 것을 방지하기 위해아래 캡쳐와 같이 scanner.nextLine(); 코드를 넣어주어개행문자를 없애줘야 하지 않나요? 답변 부탁드립니다. System.out.print("가격은?(-1입력 시 종료): "); int price = scanner.nextInt(); scanner.nextLine(); if(price==-1){ System.out.println("시스템 종료"); break; } System.out.print("수량은?: "); int num = scanner.nextInt(); scanner.nextLine();
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
7장 실전예제 8:10 다대다 관계 연관관계의 주인 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. item 엔티티에 양방향을 설정하는 부분을 보다 의문이 생겨 질문을 남기게 되었습니다. 다대다 관계의 경우, 외래키가 중간 테이블에 있게 되는데 현 강의에서는 카테코리에서 join table로 만들어준 다음, item에 양방향으로 mappedby를 하는데 혹시 그렇다면 반대로 item에서 jointable로 중간 테이블을 만들어주고, 카테고리에서 양방향으로 mappedby로 조회하는 것도 가능할까요?
-
미해결백엔드 개발자 성능 개선 초석 다지기
섹션4: Ngrinder를 통한 성능 개선 확인 에서 사용하는 예제 코드
Ngrinder를 통한 성능 개선 확인하는 부분에 NoticeReadMapper.xml 파일 내용이 깃허브의 예제 코드랑 다른데 이건 예제 코드에 없는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
트랜잭션과 관련된 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "JPA 사용 시 주의해야할 점은, 항상 “트랜잭션”이 있어야 한다"라고 해주셨는데, 그 말의 의미가 애플리케이션 서버가 DB 서버에 연결해서 데이터 관련 작업(쿼리를 날리는 등)시 무조건 트랜잭션이 필요하다는 말인가요?즉, JPA가 아닌 JDBC Template을 사용하더라도 무조건 DB와의 데이터 관련 작업 시 “트랜잭션”이 있어야 하나요?어떤 메서드엔 @Transactional이 없어도 되었고 어떤 메서드엔 필요했던 기억이 있어서 여쭤봅니다! 그리고, 트랜잭션이 걸려있을 때 애플리케이션에서 DB 서버로 쿼리를 날릴 때, "트랜잭션이 실행되고 DB에 쿼리가 날라가고 commit이 되서 DB에 데이터가 들어가는 순서" 일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA와 관련된 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 1)JPA를 사용하기위해 도메인 클래스에 @Entity나 @Id, @GeneratedValue를 달다가 확인하게 되었는데, 강의에선 javax.persistence.Id 이건데, 저는 지금 jakarta.persistence.Id에 있는 애노테이션이었습니다.그래서 궁금한 게 javax와 jakarta가 정확히 무엇이고, 일반 java랑 어떤 차이가 있는 개념인지도 궁금합니다!그리고 javax는 지금은 jakarta로 바뀐걸로 이해하면 되겠죠? 2)아래에 있는 JPA 예시 코드에서 setParameter(~~)의 역할이, 메서드의 인자로 받은 name을 setParameter로 넣어주면, 그게 쿼리의 where 조건의 값으로 들어가는 게 맞을까요?@Overridepublic Optional<Member> findByName(String name) { List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); return result.stream().findAny();} 3)QueryDsl을 사용하면 동적 쿼리를 더 잘 다룰 수 있다고 해주셨는데 동적 쿼리와 정적 쿼리의 차이점이 제가 이해하고 있는 게 맞을까요?정적 쿼리 : findByName처럼 항상 같은 조건의 쿼리동적 쿼리 : 검색 조건에 따라, 조건이 동적으로 바뀌는 쿼리ex)이름 검색, 나이 검색 등등