묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Could not find or load main class 에러 해결
Error: Could not find or load main class jpabook.jpashop.JpashopApplicationCaused by: java.lang.ClassNotFoundException: jpabook.jpashop.JpashopApplication위에 처럼 뜹니다.혼자서 검색도 해보았고 환경변수도 바꿔보았는데 무엇이 문제 인가요? 예전에 학습한다고 해봤을떄는 잘되었는데 지금은 안되네요...지금 파일은 영한님 '강의 소스 코드' 파일 입니다 -> 자바 버전 수정 하니 해결완료됨
-
미해결실전! 스프링 데이터 JPA
Springboot 3.0 Projection 최적화되었나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. Projections 강의 15:36 에 실행된 쿼리와 제 로컬에서 실행된 쿼리가 달라 질문드립니다.중첩구조의 경우 Team 에 대한 정보는 전체 다 퍼올리는 것으로 강의가 진행되고 있는데, 실행된 쿼리는 Dto 에 맞게 퍼올리는 것으로 보입니다.혹시 해당 내용에 대한 수정사항 알 수 있을까요? 공식문서를 읽는 게 아직 익숙치 않습니다 ㅠ공식 문서에도 해당 내용에 대한 언급이 딱히 없는 것 같아서 질문드립니다!
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
verify, validate, check, is
안녕하세요!verify : 과정validate : 최종 결과check : 확인is : 존재 여부이렇게 생각하는데 다른 분들 의견 및 강사분 의견을 듣고싶습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot resolve symbol persistence
커뮤니티에 올라온 이전 질문들 방법으로 해봐도 계속 안됩니다...!뭐가 문제일까요?!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행시 최상단 폴더
인텔리제이가 익숙하지가 않아서 실행시에 궁금한점이 있어서요.강의에서는 왼쪽 실행시 로그에 최상단 폴더 Test Results부터 실행이 되는데, 저는 메인에서도 그렇고 test코드에서도 실행을 시키면 크 클래스가 로그의 최상단폴더가 됩니다. 강의처럼 최상단 폴더부터 보려면 어떻게 해야되는지 궁금합니다.드라이브 링크 공유하겠습니다.https://drive.google.com/file/d/1L8ERakx6jM2ZK_L4P3OaxtrLN5GUj2SZ/view?usp=share_link
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
toString() 만 사용해도 프록시객체가 초기화되는 것이 맞나요?
일전에, 지연로딩 을 사용하면 객체의 참조를 얻을 때가 아닌, 실제 필드(메서드 포함) 에 접근할 때 프록시 객체가 진짜 객체로 초기화 되는 것으로 이해했습니다.그런데 아래와 같이 코드를 짜고 실행해보니, 객체의 참조를 얻을 때 쿼리가 나가는 것 처럼 보이더라고요.// 팀 Team teamA = new Team(); teamA.setName("팀A"); em.persist(teamA); Team teamB = new Team(); teamB.setName("팀B"); em.persist(teamB); // 회원: member1, 2 는 팀A 소속. member3은 팀B 소속 Member member1 = new Member(); member1.setUsername("회원1"); member1.setTeam(teamA); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setTeam(teamA); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setTeam(teamB); em.persist(member3); em.flush(); em.clear(); // Query String query = "select m from Member m"; List<Member> findMembers = em.createQuery(query, Member.class) .getResultList(); for (Member member : findMembers) { System.out.println("member = " + member.getUsername() + ", " + member.getTeam()); } tx.commit(); (나간 쿼리)Hibernate: /* select m from Member m */ select member0_.MEMBER_ID as MEMBER_I1_7_, member0_.createdBy as createdB2_7_, member0_.createdDate as createdD3_7_, member0_.lastModifiedBy as lastModi4_7_, member0_.lastModifiedDate as lastModi5_7_, member0_.COMPANY_CITY as COMPANY_6_7_, member0_.COMPANY_STREET as COMPANY_7_7_, member0_.COMPANY_ZIPCODE as COMPANY_8_7_, member0_.city as city9_7_, member0_.street as street10_7_, member0_.zipcode as zipcode11_7_, member0_.LOCKER_ID as LOCKER_15_7_, member0_.TEAM_ID as TEAM_ID16_7_, member0_.USERNAME as USERNAM12_7_, member0_.endDate as endDate13_7_, member0_.startDate as startDa14_7_ from Member member0_ Hibernate: select team0_.TEAM_ID as TEAM_ID1_10_0_, team0_.createdBy as createdB2_10_0_, team0_.createdDate as createdD3_10_0_, team0_.lastModifiedBy as lastModi4_10_0_, team0_.lastModifiedDate as lastModi5_10_0_, team0_.name as name6_10_0_ from Team team0_ where team0_.TEAM_ID=? member = 회원1, hellojpa.domain.Team@26ae880a member = 회원2, hellojpa.domain.Team@26ae880a Hibernate: select team0_.TEAM_ID as TEAM_ID1_10_0_, team0_.createdBy as createdB2_10_0_, team0_.createdDate as createdD3_10_0_, team0_.lastModifiedBy as lastModi4_10_0_, team0_.lastModifiedDate as lastModi5_10_0_, team0_.name as name6_10_0_ from Team team0_ where team0_.TEAM_ID=? member = 회원3, hellojpa.domain.Team@6bd16207 저는 위 코드 중 System.out.println 과정 중 프록시 객체가 초기화가 되어서 위같은 쿼리가 나왔다고 생각하는데 제 판단의 근거가 맞는지 궁금합니다.System.out.println("member = " + member.getUsername() + ", " + member.getTeam());System.out.println 을 사용하면 자동으로 객체.toString() 이 호출되고, 따라서 필드(메서드)에 접근 했으므로 이 시점에 프록시 객체가 엔티티로 초기화 되었다. 위 처럼 이해하는게 맞을까요? 항상 애써주시는 영한님과 서포터님들께 감사드립니다!!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
left join 시 on 부분 질문있습니다
JPQL:SELECT m FROM Member m LEFT JOIN m.team t on t.name = 'A'SQL:SELECT m.* FROM Member m LEFT JOIN Team t ON m.TEAM_ID=t.id and t.name='A' 이와 같은 부분에서 left outer join 시 SQL에ON m.TEAM_ID=t.id이 부분은 왜 자동으로 추가가 되는 것인지 궁금합니다. inner join의 경우에는 조인 조건에 동일한 값을 가진 행을 결과에 표기하는 것이니 해당 부분이 추가되는 것이 이해가 가는데left outer join의 경우 m.TEAM_ID=t.id 이 성립하지 않는, m에만 값이 존재하는 부분까지 포함해서 왼쪽 테이블의 전부가 결과에 표기되는 방식이 아닌가요? 그냥 단순히 'm의 TEAM_ID 와 t의 id가 연관관계를 이룬다' 는 의미라고 이해하면 되는 부분일까요? 그리고 left outer join 시 on 절에 필터링 조건을 추가해도 left outer join 특성상 필터링으로 걸러진 행까지 다시 포함되서 결과가 반환되는데 무슨 의미가 있는지 잘 이해가 가지 않습니다. 제 생각으로는 select의 주체가 되는 값만 영속성 컨텍스트에 저장하는 일반 join에서는 의미가 없고 fetch join 같은 경우에 의미를 가진다고 생각되는데 제 생각이 맞는 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링데이터 JPA 상속 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]https://www.inflearn.com/questions/116505/%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4 위 내용을 읽고 이해한게 맞는지 질문하게 되었습니다.SpringDataJpaMemberRepository 인터페이스가 JpaRepository와 MemberRepository 인터페이스를 상속받는데"MemberRepository에 정의된 추상 메서드들을 SpringDataJpaMemberRepository에서 재정의할필요없이 JpaRepository 인터페이스에 기본적으로 정의되어 있는걸 상속받기 때문에 재정의 없이 바로 사용할 수 있다" 라고 이해했습니다.그러나 만약 JpaRepository에서 정의된 기본 기능 외에 다른 기능이 필요하다면SpringDataJpaMemberRepository 또는 부모인 MemberRepository에서 기능을 추가할 수 있는데,SpringDataJpaMemberRepository에 추가하게 되면 스프링데이터jpa의 의존도가 올라가지만 스프링데이터jpa가 제공하는 편의기능으로 사용이 사용하기 편하게 되고MemberRepository에 기능을 추가하게 되면 SpringDataJpaMemberRepository 에 간단히 내용을 적어 편하게 사용하는것보다는 복잡하지만, 대신에 스프링데이터Jpa의 의존도는 떨어진다.라고 이해했는데 맞는지 확인해주실 수 있으신가요?? :)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
테이블 연관관계 질문
예를들어, 하나의 주문에 짜장면2개, 짬뽕2개를 했다고 가정하면Order테이블에서는 1개의 데이터가 생성,OrderItem테이블에서는 2개의 데이터가 생성 되는게 맞을까요?그렇다고 한다면 Order에 대한 총액이 궁금할 때에는 Order에서 OrderItems를 구한 뒤, 각각의 orderPrice를 더하면 될까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
디비에 물리적 FK를 설정 하지 않고도 JPA 연관관계 사용이 가능한가요?
안녕하세요.좋은 강의 덕분에 학습 잘하여 정말 감사하다는 말씀 부터 드립니다.다름아니라, 디비에 물리적 fk를 설정하지 않고 테이블 연관관계 매핑을 하였을시 별다른 문제없이 JPA 연관관계를 사용할 수 있는지 궁금하여 질문드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
내용 관련 질문
정확히 개발에서 domain이란게 어떤 뜻인가요 ?개발 대상의 범위? 정도로 이해하고 있는데 정확히 어떤 뜻으로 사용되는 건가요 궁금합니다..!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
동적쿼리
안녕하세요! 아직 강의를 다 듣지는 않았지만, 궁금한게 있어 질문드립니다! 제가 현재 진행해야 하는 프로젝트는 동적으로 쿼리를 생성하는 게 중요합니다. 테이블에 10개의 컬럼이 있다면, 2개를 선택해서 보여줄 수도, 3개를 선택해서 보여줄 수도 다양한 조합으로 보여줘야 합니다. 저는 node.js와 flask로 웹을 개발한 경험이 있는데요, 컬럼을 리스트(또는 배열)로 받고 for문을 돌려가면서 컬럼 and 컬럼 and ... 이런 식으로 문자열을 만든 다음 select문 문자열에 for문 돌리면서 만든 문자열을 넣어서 예를 들면 select {컬럼조합} from 테이블 이런 식으로 만든 뒤 실행시켰거든요. 문자열만 잘 작성하면 그 문자열대로 바로 실행이 되니 오히려 쉽다고 느꼈습니다. 근데 스프링부트는 쿼리 수행이 굉장히 정적이라는 느낌인데요....제가 아직 공부 중이라 잘은 모르겠으나 어디서는 조회하고자 하는 컬럼에 대한 인터페이스를 만들라고 하는데, 그 조합이 한두개가 아닌지라.....그걸 하나하나 만들 수도 없고요...이건 where조건도 마찬가지고 join도 마찬가지고요...다른 프레임워크에서는 쉽게 가능하던걸 springboot가 바보 프레임워크가 아닌 이상 지원 안해주는 건 말이 안될 거 같고 이런 걸 어떻게 해야 하는 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
P6spy의 가독성(?)이 이상합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사진이 잘 보이시는지 모르겠지만 쿼리문이 가로로 길게만 나타납니다.참고로 스프링부트는 3.x 버전이고 콘솔창 좌측에 소프트 랩 버튼또한 설정이되어있습니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
shared entitymanager proxy for target factory 빨간 줄 안내
import com.querydsl.jpa.impl.JPAQueryFactory import javax.persistence.EntityManager import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @Configuration class QuerydslConfig ( private val em: EntityManager //<--- 빨간 줄 발생 ) { @Bean fun querydsl(): JPAQueryFactory { return JPAQueryFactory(em) } } 안녕하세요! 강의 잘 듣고 있습니다. 들으며 따라치다 궁금한 점이 생겨 질문드려요.강의에 나온대로 configuration을 작성하면 다음과 같이 빨간 줄이 발생하는 데 빌드에는 이상이 없어서 어떤 개념인지 궁금합니다.
-
해결됨스프링 시큐리티
예시로 들어주신 상황에 대한 의문점이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 여기서는 공격자가 이미지 태그를 이용해서 특정 주소로의 요청을 보내도록 유도하는 것 같은데, 이 경우에는 GET 메서드로 요청을 보내므로 따로 csrf 토큰을 검사하지 않으니, 여전히 공격에 취약하다고 봐야 하지 않나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리파라미터 남기기
스프링 부트 3.0 이상에서는 강의에서 쿼리 파라미터 남기기 부분이 실행되지 않습니다. 어떻게 해야 하나요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Cannot resolve method 'run(Class String[])'가 Cannot resolve symbol 'String' 와 같은 오류인가요?
1. 강의 내용과 관련된 질문인가요? (○예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (○예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (○예/아니오) [질문 내용]안녕하세요.강사님께서 처음에 말씀하신 대로 설치했는데, 아래와 같은 오류가 떴습니다. 두 가지 오류의 원인(?)이 다른 것일 거라는 가정하에 첫 번째 것부터 구글링으로 JDK 버전을 선택하래서 해결했는데,두 번째 오류인 Cannot resolve method 'run(Class String[])'까지 모두 얼떨결에 해결되어 버렸습니다(?) 아! 해결됐다! 그리고 그냥 넘어가도 되는 사안인 건가요.. 아님 원인을 알고 가야 하나요...??두 번째 오류라고 나온 문장은 구글링 해봐도 계속 첫 번째 오류 문구 관련 글만 나오는데같은 오류인 건가요..?
-
미해결스프링 시큐리티 OAuth2
정수원님이 기술을 학습하시는 방법이 궁금합니다
안녕하세요 정수원님 우선 좋은 강의 만들어주셔서 감사합니다.강의와는 조금 다른 질문이지만 듣다보니 궁금한점이 생겨서 질문드립니다.예를 들어 Spring Security를 처음 학습하신다고 하면 어떤식으로 학습하시고, 내부구조를 디버깅해보시는지 궁금합니다.강좌에서보면 특정 클래스들에 break point를 걸고 디버깅하시는 모습을 보여주십니다.하지만 처음 Spring Security를 학습한다고 가정하면 어떤 클래스들이 핵심 역할을 하는지 파악하기 힘들것 같다고 느껴졌습니다. 개인적인 생각으로는 2가지 방법을 생각해 보았습니다.Spring Security Docs를 보고 주요 클래스들을 파악해본다WebMvcAutoConfiguration, SecurityAutoConfiguration등 클래스 하위로 파악해나간다 이에 대해 수원님은 어떤 방식으로 접근하시는지 궁금해서 질문 드립니다
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
redis lock과 mysql lock 성능 질문입니다.
강의를 보면 redis의 redisson과 mysql db lock 중 redisson을 이용한 방식이 더 성능이 좋다고 설명 해주셨는데요.강의의 테스트 코드 수행시간을 보면 mysql의 비관락이 약 2초, redisson을 이용한 방식이 약 5초 정도 걸리는 것을 보아 비관락의 성능이 더 빠른 것처럼 보이는데..이럼에도 불구하고 redisson의 성능이 더 좋다고 하시는 이유가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.bat 실행후, H2 콘솔에서 연결을 누르면 오류가 뜹니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의 잘 듣고 있습니다.window 운영체제라서 h2.bat 실행후 콘솔창이 떠서 연결을 누르면 아래 오류가 뜨는데이런 오류가 뜹니다. 왜그런 걸까요?