묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
N:1 관계에서 delete 질문있습니다.
@Entity @Builder @NoArgsConstructor @AllArgsConstructor @Getter @Setter public class Member { @Id @GeneratedValue private Long id; @Column private String username; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity @Builder @NoArgsConstructor @AllArgsConstructor @Getter @Setter public class Team { @Id @GeneratedValue private Long id; private String name; } try { tx.begin(); Team team = new Team().builder() .name("teamA") .build(); em.persist(team); Member member = new Member().builder() .username("member1") .team(team) .build(); em.persist(member); em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); Team findTeam = findMember.getTeam(); em.remove(findTeam); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); }findTeam을 remove하기 전에 findMember.setTeam(null) 이런 식으로 팀과의 연관 관계를 null로 만들고 삭제하지 않았는데 에러가 발생하지 않고, 데이터베이스에서 member 정보와 team 정보 모두 삭제됩니다. CASCADE 설정이 되어 있는 건 아닌데 왜 이렇게 동작하는 걸까요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 초보의 질문입니다
if문 관련 질문입니다.조건에 따라 dollar <0 일 경우 "잘못된 코드입니다dollar == 0 일 경우 "환전할 금액이 없습니다dollar >0 일 경우 dollar = dollar*1300을 출력하고 싶습니다 그런데 위와 같이 코드를 작성하였을 때 dollar가 0 이하가 될 경우 if (dollar<0)문과 else문이 함께 실행됩니다.왜 이러는 걸까요? 저는 if 문이 실행되면 else문은 실행이 되지 않는다고 이해했는데 혹시 다른 이유가 있는 걸까요?답을 알고 계시는 분은 상세하게 설명 부탁드립니다ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트 생성시 dependencies에 spring web starter 안뜸
dependencies에 spring web strater 검색해도 안뜨는데 어떡해야하나요??
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
숫자와 문자의 2진수 숫자가 동일할 경우 타입에 대한 메타정보는 어디에 있나요
Java는 해당 강의만 구매 해서 앞의 강의 내용에 있을지 모르겠습니다만 헷갈리는 부분이 있습니다. 숫자와 문자의 2진수 표현은 같고데이터타입이 숫자 타입인지 문자 타입인지 나타내는 byte 도 있을 것 같은데 이걸 어떻게 구분하는지 구글링에서 검색할 수 있는 키워드나 답을 알려주실 수 있으실까요 숫자 65의 2진수 표현: 1000001문자 'A'의 2진수 표현: 1000001 강의 내용에 java의 경우 1byte의 prefix를 통해 음수를 표현할 수 있다고 하셨는데 데이터 타입은 어디에서 관리되는지 궁금하네요. 저장되는 메모리 구역이 다른지..그렇다 해도 할당된 데이터 구조 내에 있어야 할 것 같은데 진짜 궁금하네요 클로드에선 아래와 같이 답을 줬는데요각 데이터 타입은 1바이트부터 8바이트까지 고유한 메모리 할당 방식을 가지고 있어, 메모리 내 위치와 크기로 타입을 구분할 수 있습니다. 그럼 각 데이터에 대한 메모리 위치는 stack 에서 가지고 있지 않나 싶은데 stack 에서도 해당 데이터 타입이 byte 인지 아니면 텍스트인지 어떻게 알고 있는지 다시 궁금하네요. -ㅂ- stack을 공부하면 되겠네요... 문자인코딩 섹션이 단순한 내용 같아도 진짜 생각 많이 하게 되는 강의네요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Tomcat
[질문 내용]안녕하세요,강의 중에 궁금한점이 있어 글 남깁니다. 스프링 부트 스타터에 톰캣이 인베디드 되어서 저절로 가져오기 때문에 서버에 따로 톰캣을 설치할 필요가 없다고 하셨는데,그렇다면 각 프로젝트를 서버에 띄우게 되면 모두 톰캣이 멀티 인스턴스로 띄우고 각 프로젝트는 모두 다른 포트를 사용해야하는걸까요? 만약 그렇다면 각 프로젝트에 톰캣 포트 세팅을 따로 해주어야하는데 해당 부분은 서버에서 하는게 아닌 프로젝트를 배포할때 세팅 파일에 따라 세팅이 되는 걸까요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
오류?
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 8.3 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown실행과 테이블 다 잘 만들어 지는데 이런 로그가 계속 뜹니다.제 mysql 문제일까요?mac os 사용중이고 강의처럼 docker를 통해 띄우는게 아닌 홈브류로 mysql을 다운받아서 쓰고있었어서 그대로 쓰는중입니다
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
고급 3편 출시 예정일
안녕하세요.영한님의 자바 시리즈를 달리고 있는 수강생입니다.혹시 고급 3편은 올해 12월 안에는 출시가 되는지 아니면 올해를 넘겨 2025년에 1-2월에 출시가 되는지 대략적인 시기가 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
똑같이 코딩했는데 널익셉션이 떴는지 모르겠습니다
실전! 스프링데이터 jpa에서8강을 듣고있는데 memberRepository 파일도 영상과 똑같이 코딩했는데 왜 안되는지 모르겠습니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
detach시 쿼리 삭제
안녕하세요엔티티를 준영속 상태로 만들면 1차 캐시에서 제거되고, 관련 SQL도 제거된다고 하셨는데 실제로 돌려보니까 insert 쿼리가 나가더라고요 실제 db에는 저장 되진 않았습니다. insert 쿼리가 나가는 이유가 무엇 때문일까요??
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
문자열 리터럴과 문자열 객체 관련해서 질문이 있습니다.
안녕하세요!강의를 듣던 도중에 의아한 부분이 있습니다. 8분 43초부터 들은 바에 의하면문자열 리터럴로 생성한 문자열은 (1) Runtime Constant Pool에 저장되고, (2) 사용되는 시점에 String Contant Pool에 복사된다.new 키워드로 생성한 문자열 객체는 String Constant Pool에 저장된다. (이 내용은 10분 28초) 위 내용을 다음 사진처럼 표현해보았습니다. 여기서 한 가지 의아한 부분이 있는데요.문자열 리터럴과 new 키워드로 생성한 문자열 객체 둘 다 String Contstant Pool에 저장된다면, 동일성 비교에서 true가 반환되지 않을까요?? 그러나 실제로는 동일성 비교를 하면 false를 반환하게 됩니다.제가 이해했던 바로는 문자열 리터럴은 String Constant Pool에 저장되고, new 키워드를 통한 문자열 객체는 Heap 영역에 저장되기 때문에 동일성 비교에서 false를 반환한다라고 생각했습니다.String s1 = "hello"; String s2 = "hello"; String s3 = new String("hello"); s1 == s2; // true s1 == s3; // false 결론적으로 제가 궁금한 부분은..new 키워드로 사용한 문자열 객체는 String Constant Pool이 아닌 단순히 JVM Heap 영역에 저장되는 것이 맞지 않는지 궁금합니다! 좋은 강의 감사합니다!!(11분 08초에 natvie 오타가 있는 것 같습니다!)
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대수입스케쥴(PriorityQueue) 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래와 같이 코드를 작성하였을 때 예제에는 정상정답이 나오고, 저도 반례를 찾지 못하는데, 채점에서는 오답이라고 나옵니다.어느부분이 오답인지, 그리고 반례가 뭐가 있을지 궁금합니다.ㅠㅠ import java.util.*; public class Main { public static class schedule implements Comparable<schedule>{ int pay = 0; int day = 0; schedule(int p,int d) { this.pay = p; this.day = d; } @Override public int compareTo(schedule o) { if(this.day == o.day) return o.pay - this.pay; else return o.day - this.day; } } public void solution(List<schedule> list) { Collections.sort(list); int answer = 0; int day = list.get(0).day; Queue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder()); for(schedule s : list) { if(day == s.day) { queue.offer(s.pay); } else { if(!queue.isEmpty()) { int p = queue.poll(); answer += p; } queue.offer(s.pay); day--; } } System.out.println(answer += queue.poll()); } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); List<schedule> list = new ArrayList<>(); for(int i=0; i<n; i++) { int pay = kb.nextInt(); int day = kb.nextInt(); list.add(new schedule(pay, day)); } T.solution(list); } }
-
해결됨김영한의 실전 자바 - 중급 2편
new T(); 와 new Node<T>();의 차이
===================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 수업을 열심히 따라가며 코드를 작성해보면서 궁금한 점이 생겨 이렇게 질문드립니다. 앞서 제네릭 부분에서 타입이레이져 방식 때문에 제네릭 타입정보는 컴파일 이후 모두 사라지고 타입변수의 상한타입으로 바뀐다고 이해하였습니다. 그래서 위 처럼 new 로 직접 타입변수 T의 인스턴스를 생성하거나 instanceof T 구문을 쓰지 못한다고 하셨습니다.컴파일 이후에는 T에 대한 정보가 없으니까요. 그런데 리스트에서 제네릭을 사용하는 부분을 보면 LinkedList<T>처럼 제네릭 타입을 활용해 클래스를 정의하였고 내부에 new Node<T>(); 와 같은 부분이 있어 위의 언급한 내용과 상충하는 것 같아 이 경우는 왜 가능한지 의문이었습니다. 구글에서 찾기 쉽지않아 직접 T를 생성하는 것(new T(); )과 Node<T>를 생성하는 것(new Node<T>(e);)의 차이를 혼자 고민해보았습니다.T를 생성하는 것은 힙영역에 T 인스턴스를 생성하는 것인데 컴파일 이후 T에 대한 정보가 전혀 없어 T 직접생성이 불가능하지만, Node<T>의 경우 Node의 인스턴스를 생성할 때 T타입인 item이 있지만 이때 T타입의 객체를 생성하는 것이 아니라 언젠가 생성될 T객체의 참조값을 담을 변수만 선언하는 것일 뿐이고 이는 컴파일 이후 T의 정보가 없어 Object 타입으로 변수 item이 선언되더라도 후에 T타입의 객체(의 참조값)가 item에 할당될때 저절로 업캐스팅이 되어 문제없이 item변수를 사용할 수 있다고 결론내렸습니다. 이렇게 생각하면 문제없는걸까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
김영환님 책에는 기본키 두개일떄에 관한내용이
내용이있는것같은데 인강에는 없나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 연결 관련 에러 질문있습니다
안녕하세요 선생님. 실습 과정중 mysql과 연결이 잘 안 되는 것 같아 질문드립니다 처음에 있었던 에러였는데요 화면 접속 자체는 잘 되는데 이름과 나이를 저장하면 2024-11-28 16:57:49.886 ERROR 13764 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.group.libraryapp.dto.user.request.UserCreateRequest]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.group.libraryapp.dto.user.request.UserCreateRequest (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]] with root cause com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.group.libraryapp.dto.user.request.UserCreateRequest (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]이런 오류가 떴습니다. 검색해보니 UserCreateRequest에 기본 생성자를 만들라고 해서 만든 후 실행하니 이 오류는 안뜨긴합니다. 인자 있는 생성자가 있었는데 왜 기본 생성자를 만들어야하는건가요? 지금 제 코드가 꼬여서 그런걸까요?또한 에러 해결 방법으로 애노테이션 누락: Jackson 라이브러리에서 객체를 직렬화/역직렬화할 때 필요한 애노테이션이 누락되었을 수 있습니다. 예를 들어, 생성자에 @JsonCreator와 각 필드에 @JsonProperty를 추가해 보세요.이런 방법을 추천하는데 이건 무엇인가요?? 위 에러 고친 이후에는 SQL 문법 오류가 발생하는데요 선생님과 똑같이 문법을 사용했는데 왜 오류가 생기는지 모르겠습니다.. sql에 테이블 자체는 잘 생성되어있는 상태입니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원리포지토리 테스트케이스 작성 첫 테스트
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원 리포지토리 테스트 케이스 작성중 4:43 test 결과저만 -1 나오는게 비정상인가요?package hello.hello_spring.repository; import hello.hello_spring.domain.Member; import org.junit.jupiter.api.Test; class MemoryMemberRepositoryTest { MemberRepository repository = new MemoryMemberRepository(); @Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); //repository.findById(member.getId()); Member result = repository.findById(member.getId()).get(); System.out.println("result = " + (result == member)); } }
-
미해결자바 코딩테스트 - it 대기업 유제
채점 사이트 개설
강의 채점 사이트 안녕하세요 강사님 기존 강의인"자바 알고리즘 문제풀이 입문 :코딩테스트 대비"를 너무 잘 듣고 공부해서 강사님의 다음 강의를 의심없이 샀는데채점 사이트가 없어서 너무 불편합니다...왜 기존에는 있었는데 이번 강의에는 없는걸까요...하나 똑같이 만들어주시면 안되나요?이미 강의자료도 의심없이 받았다가 환불도 안되고..이전 강의엔 채점 사이트가 있어서... 채점 사이트가 없을 줄은 꿈에도 몰랐네요후속강의임에도 불구하고 더 불편해진 것 같아서 문의드립니다.
-
미해결실전! 스프링 데이터 JPA
Projection 부분 듣고있는데 의문점
의문점이있습니다. public interface UsernameOnly { String getUsername(); }이런식으로 사용자 이름만 가져올수있게 하는건 알겠는데 그냥 레파지토리에 @Query("select m.userName from Member m ")그냥 이런식으로 하면되는거아닌가요?굳이 projection안쓰고?햇갈립니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쿼리를 데이터베이스에 전송
플러시를 하면 쿼리를 db에 전송하는데 단순히 전송하는것만으로는 db에 반영이 안되나요?커밋을 한 후에 반영이 되는건가요?
-
미해결김영한의 실전 자바 - 기본편
오버라이딩 논리를 다시 설명해주세요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저와 비슷한 질문을 남긴 사람들의 글을 읽어보았는데, 명확하게 이해가 가질 않아서 질문을 남깁니다.부모 변수가 자식 인스턴스를 참조하는 상황Parent poly = new Child(); 이 상황은 Parent를 상속받은 Child라는 객체를 생성하여, 현재 Parent,Child 두 객체가 생성된 상황이며, poly를 부모 변수로 선언하였습니다. 부모는 자식에 대해 알 수 없다라는 논리에 따라 Child라는 객체가 있어도 부모 Parent는 Child에 선언된 메서드와 필드를 모른다는 것이 영한님의 설명인 것 같습니다.그런데, 오버라이딩을 하게 되더라도 제 생각에는 여전히, Parent는 Child의 메서드와 필드를 모르는 상황은 여전한데, 어떻게 Parent가 Child 메서드가 오버라이딩을 한 상황을 알고, 오버라이딩된 Child 메서드가 우선권을 갖는지 잘 모르겠습니다. 이는 '부모는 자식에 대해 알 수 없다'라는 논리와 맞지 않는 것 같아서 부가적인 설명을 원합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
일대 다 중간테이블
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 혹시 다대다의 경우는 중간테이블을 두어 푸는 것이 실무에서 필수적이라 했는데, 일대 다의 경우에도 비즈니스 로직 분리:중간 테이블을 통해 비즈니스 로직(보상 분배, 순위 계산 등)을 별도로 관리함으로써, 엔티티 간의 복잡성을 줄입니다.데이터의 독립적 관리:과거 랭킹 기록, 보상 내역 등 변경하지 않아야 할 데이터를 독립적으로 저장하고 관리할 수 있습니다. 이런 이유로 중간테이블을 두기도 하나요? 예를 들어 사용자와 랭크 관계가 일대 다인 상황에서(사용자는 한 랭크만 참가 가능) 과거 정보들을 저장하기 위해 중간테이블을 두고 거기에 전적 같은 정보를 저장하고자 하는데 이런 경우 일대 다임에도 중간테이블을 놔두어 관리해도 되나요?