묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
22: 10 초 질문입니다.
=======================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]22: 10 초에서는 Team과 Member의 join fetch 를 진행하면 result = 3 의 결과가 나오는데 저는 계속해서 result = 2의 결과가 나와서 질문드립니다. 최신 버전으로 인해서 jpa 최적화 방식의 변화가 생겨서 그런 것인지 아니면 제가 실수한 것인지 궁금합니다.JpaMain 실행결과: 디비 상태: package jpql; import jakarta.persistence.*; import java.util.List; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Team teamA = new Team(); teamA.setName("teamA"); em.persist(teamA); Team teamB = new Team(); teamB.setName("teamB"); em.persist(teamB); Member member1 = new Member(); member1.setUsername("회원1"); member1.setAge(10); member1.setTeam(teamA); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setAge(10); member2.setTeam(teamA); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setAge(10); member3.setTeam(teamB); em.persist(member3); em.flush(); em.clear(); String query = "select t from Team t join fetch t.members"; List<Team> result = em.createQuery(query, Team.class) .getResultList(); System.out.println("result = " + result.size()); for (Team team : result) { System.out.println("team = " + team.getName()); for(Member member : team.getMembers()){ System.out.println("-> member = " + member.getUsername()); } } tx.commit(); } catch(Exception e){ e.printStackTrace(); tx.rollback(); } } } package jpql; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.OneToMany; import java.util.ArrayList; import java.util.List; @Entity public class Team { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); public List<Member> getMembers() { return members; } public void setMembers(List<Member> members) { this.members = members; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package jpql; import jakarta.persistence.*; @Entity public class Member { @Id @GeneratedValue private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; @Enumerated(EnumType.STRING) private MemberType type; public MemberType getType() { return type; } public void setType(MemberType type) { this.type = type; } public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Member{" + "id=" + id + ", username='" + username + '\'' + ", age=" + age + '}'; } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 추가시 회원목록 whitelabel 500
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원 추가 전에는 회원 목록 추가 모두 정상적으로 진행되다가 1명이라도 회원가입 하면 회원목록 진입시 whitelabel 500 에러가 뜹니다. 콘솔에는 members:1 Failed to load resource: the server responded with a status of 500 ()이 에러가 뜨고 인텔리제이에서는org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'id' cannot be found on object of type 'java.util.ArrayList' - maybe not public or not valid?이 에러가 뜹니다 https://drive.google.com/file/d/1aIglW2hFY46VkuO2FCaqcOl80ii87AvE/view?usp=sharing 감사합니다.
-
미해결김영한의 실전 자바 - 기본편
.
.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
10. 마구간 정하기 [ 비슷하지만 다른 해답] 이래도 맞게 푼 걸까요??
채점사이트에서 출력은 "첫 줄에 가장 가까운 두 말의 최대 거리를 출력하세요." 라고 되어 있었습니다.제 생각대로라면 말들이 여러마리니까 가장 가까운 말들의 거리가 말들마다 다를수도 있겠다는 생각이 들어. 최대거리를 구하기 위해 코드를 조금 다르게 쳤습니다. 채점사이트에서는 정답처리 되었는데 확신이 안들어서 이 방식대로 풀어도 되는지 피드백주세요. 또한, 제가 한 방식과 원래 풀이가 어떤 차이가 있는지 궁금합니다.첨부1. 원래 풀이, 내가 생각한 풀이2. 문제 전체 소스코드 *강의 풀이 방식 count()public int count(int[]arr, int distance){ int ep=0, cnt=1; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; ep=i; } } return cnt; }*내가 푼 방식 count()public int[] count(int[]arr, int distance){ int [] res = new int[2]; int ep=0, cnt=1; int min = Integer.MAX_VALUE; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; min = Math.min(min,arr[i]-arr[ep]); // 말들의 최소거리 ep=i; } } res[0] = cnt; // distance로 배치되는 말의 수 res[1] = min; // 말들의 최소 거리 return res; }*강의 풀이 방식 solution()내부 이진탐색 while문while (lt<=rt){ int mid = (lt+rt) / 2; //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(count(arr,mid) >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = mid; } else rt = mid-1; }*내가 푼 solution()내부 이진탐색 while문while (lt<=rt){ int mid = (lt+rt) / 2; int res[] = count(arr,mid); //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(res[0] >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = res[1]; // answer = mid 가 아닌 count메소드에서 계산한 말들의 최소거리를 넣어준다. //(말들이 여러마리일때 가장 가까운말의 최대거리를 구하라고 문제에 명시되어있어서) } else rt = mid-1; } 전체 소스코드import java.util.*; public class Main { public int[] count(int[]arr, int distance){ int [] res = new int[2]; int ep=0, cnt=1; int min = Integer.MAX_VALUE; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; min = Math.min(min,arr[i]-arr[ep]); // 말들의 최소거리 ep=i; } } res[0] = cnt; // distance로 배치되는 말의 수 res[1] = min; // 말들의 최소 거리 return res; } public int solution(int n ,int m, int[] arr){ int answer = 0; Arrays.sort(arr); int lt = 1; int rt = arr[n-1]-arr[0]; //arr[arr.length-1]로 끝내도 큰 차이 없음 while (lt<=rt){ int mid = (lt+rt) / 2; int res[] = count(arr,mid); //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(res[0] >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = res[1]; // answer = mid 가 아닌 count메소드에서 계산한 말들의 최소거리를 넣어준다. //(말들이 여러마리일때 가장 가까운말의 최대거리를 구하라고 문제에 명시되어있어서) } else rt = mid-1; } return answer; } public static void main(String[] args) { Main M = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int [] arr = new int [n]; for(int i=0;i<n;i++)arr[i]= kb.nextInt(); System.out.print(M.solution(n,m,arr)); } }
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
synchronized 사용 시 쓰레드 질문
synchronized를 사용하면 1개의 쓰레드만 이용한다고 말씀해주셨는데startTransaction(); stockService.decrease(id, quantity); endTransation();에서 왜 다른 쓰레드가 먼저 호출되는 상황이 발생하는건가요?이 부분이 이해가 잘 안됩니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderSimpleQueryDtos 생성 시 AllArgsContructor 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 들으면서 5분 쯤에 new jpabook 을 통해 쿼리의 select 결과물을 선택하는 코드 부분에 강사님께서 OrderSimpleQueryDtos 의 생성자를 만드실 때 궁금한 점이 있습니다. 생성자를 만들 경우 @AllArgsConstructor 를 사용해서하는 것과 강사님께서 직접 하나씩 주입해주시는 것의 차이가 있을까요?
-
미해결김영한의 실전 자바 - 기본편
7. 자바 메모리 구조와 static 문제 1: 구매한 자동차 수 질문
문제 1번 답public class Car { private static int count; private String car; public Car(String car) { System.out.println("차량 구입, 이름: " + car); this.car = car; count++; } public static void showTotalCars() { System.out.println("구매한 차량 수: " + count); } }나의 풀이public class Car { private static int count; public Car(String car) { System.out.println("차량 구입, 이름: " + car); count++; } public static void showTotalCars() { System.out.println("구매한 차량 수: " + count); } } 답과 제 풀이를 비교해보면,멤버변수로 String car를 지정하고, Car 생성자에서 this 키워드로 car를 받는데, 이 부분을 생략하여도 결과가 같게 나옵니다.어떤 차이가 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 주문에서 insert가 안되고 select 됩니다
회원 가입, 상품 등록에는 데이터 베이스 insert가 사용하나상품 주문 에서는 insert가 아닌 select만 사용 됩니다.2h 페스워드는 jpashop 입니다https://drive.google.com/file/d/1aCGyaNxhGlpeWDy0EIkNp5wBgV4WVLaA/view?usp=sharing
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Redisson 값 설정 질문드립니다.
Redisson을 사용할때 waitTime과 leaseTime 값 설정이 잘못되면 서비스의 큰 문제가 발생할 수 있지 않나요?예를들어, 서비스가 서버 상황에 따라 특정 로직을 처리하는데 걸리는 시간이 다를 거라고 생각합니다. 이때 leaseTime이 처리 시간보다 적다면 동시성 문제가 추가로 발생하지 않나요?또한 강의에서처럼 waitTime 값에 따라 동시성 문제 발생 여부가 달라진다면 이 또한 실제 현업에서는 상황에 따라 다르기 때문에 문제가 되지 않을까요? 위와 같은 이유로, Redisson이 너무 위험하다고 생각이 드는데 제가 잘못이해한건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemoryMemberRepositoryTest 실행시 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); //result와 member1이 같은지 아닌지 판단 }이 findByName() 실행하기 이전까지는 앞부분은 전부 test도 잘 되었고, 오류 없이 출력이 되었습니다. 이걸 test하니까위와 같이 뜨면서 MemoryMemberRepository.java에서 아래 사진과 같이 .findAny(); 부분에 오류가 뜹니다.다른 질문글을 찾아보니 강의 교안 코드에 나와 있지 않은 null에 관한 내용을 작성해야 하나 싶은 찰라에 새로운 오류까지 발생하였습니다. https://drive.google.com/file/d/1F5YGcP4JR40gl4Ke8unTL-Jk8zIosp_w/view?usp=sharing
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자동으로 소스코드가 불러와진 것 같은데
인텔리제이 설치 전에 다운로드를 미리 받아놨는데요, 강사님께서 불러오라는 대로 하면 상기 이미지와 같은 화면이 뜹니다그러다보니여기에도 하나만 뜨는데 이대로 강의 진행해도 문제 없나요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 다운로드
이전에 설치할 때는 다른 프로그램 설치할 때와 똑같았는데 이번에는 파일이 이런 형태로 뜨면서 다운이 되는지 안 되는 건지 모르겠어요첫 강의때 알려주신 홈페이지로 접속해서 그대로 한건데 ,,다운로드 되지 않으면 클릭하라고 돼있는 버튼 눌러도 똑같은 게 뜨네요혹시 해결법 아실까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
if문 내에서 반영된 변수의 값이 계속 유지되는 이유
스코프를 벗어나면 변수를 쓸 수 없다고 했는데위 코드는 맨 위에 미리 선언해놨기 때문에 모든 if문에서 쓸 수 있는것으로 확인했습니다.근데 궁금한것이if(choice==1)에서 반영된 가격이 어떻게다음 if문인 choice==2 조건일 때 결제가 가능하게 되는거에요? 1번 눌렀을 때 실행되는 if문에서 가격과 수량이 맨 위(while문 위쪽) 변수에 반영되어 있는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello 페이지로 안들어가집니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.>>> 어노테이션이 저렇게 뜨는데 설정을 바꾸는 방법을 못찾겠어요. >>> 해당 컨트롤러로 못들어갑니다 ㅜㅜ 에러페이지가 나와요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
cascade, 연관관계 사용 기준 질문.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 잘 듣고 있습니다.cascade,연관 관계를 사용하는 기준이 궁금해서 질문 글을 작성합니다.1.cascade 질문제가 이해한 바로는 엔티티를 영속성 컨텍스트 관리를 받기 위해 persist 등록하는 것이며 각 엔티티는 따로따로 persist를 해야 되는데 cascade를 사용하면 하나의 엔티티를 persist할 때 그와 연관된 엔티티를 같이 해주는 것으로 이해했습니다. Order 코드에서 OrderItem과 Delivery에 cascade가 적용됐는데 Member에는 적용을 안 하는 것 같더라고요. 왜 Member는 안 하는지 궁금합니다. 연관 관계 질문order와 연관된 엔티티 간에 연관관계 메소드를 통해 한쪽에서 서로 등록해주는 것은 이해가 가는데 Item과 Category간에는 어느 쪽에도 연관 관계 메소드가 없는 이유가 궁금합니다. Item과 Category 이 둘은 약간 상수? 느낌이라서 연관 관계를 지을 필요가 없는 것일까요? 답변 주시면 정말 감사하겠습니다.
-
해결됨김영한의 실전 자바 - 기본편
.(점, dot)을 이렇게 이해해도 되는지?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]셉션1. 클래스와 데이터 - 객체사용 에서.(점,dot) 를 통해서 메모리의 주소 값(이 있어야)으로 이동한다고 하였습니다.(4:14~38초 사이) 그러면this.name 나, import의 java.util.scanner package 에 class1.ex 도 .(점 dot) 을 통해서 메모리 주소 값으로 이동하고 여기에서 사용할 수 있게 한다?라고 이해해도 되는지 알고싶네요.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
CountDownLatch
다른 스레드에서 작업이 끝날 때 까지 기다리는 CountDownLatch를 이용해야한다고 하셨는데 왜 Race Condition이 발생하는지 궁금합니다. 결국은 CountDownLatch를 안써도 되는 것이 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category, Item 연관관계
이전 강의를 통해 연관관계의 주인이 아닌 클래스에 mappedBy 속성을 사용한다고 이해하였습니다. Category 에 @JoinTable 을 사용하고, Item 에 mappedBy 속성을 사용하셨는데 왜 Item 에 mappedBy 를 사용하신 것인지 궁금해서 질문 남깁니다. 감사합니다.
-
미해결기초 알고리즘 코딩테스트 40일 완성 (by 하루코딩)
디버깅 관련 문제
안녕하세요 혹시 저는 디버깅 찍으면이렇게 뜨는데 선생님처럼 뜨게 해서 디버깅을 확인하고 싶은데 어떻게 해야하나요? ㅠ구글링을 해도 관련 자료를 찾기 힘드네요..
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
foreach 자동완성이없어요
for이랑 fori는 있는데, foreach가없는데, 어떻게 해결해야되나요 ㅜㅜ