묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 OAuth2
MSA 방식의 구조
현재 예제로 구성된 방식은 MSA방식이라고 생각해도 될까요? 자원서버 ( 앨범 , 친구 ) , 클라이언트서버 , 인가서버 형식으로 각각 서버를 나누어서 역할이 구분되어 있는방식이라 제가 이해한것이 맞는지 궁금합니다. 항상 좋은강의 해주셔서 감사합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
p6spy, meta-inf 위치
현재 스프링 부트 3.0.6버전을 사용하고 있어서 p6spy를 사용하기 위해 pdf에 적힌 대로 파일을 추가하려고 했지만 META-INF 폴더를 찾을 수 없어서 질문 드립니다
-
미해결실전! 스프링 데이터 JPA
@Param의 존재 이유>?
@EntityGraph(attributePaths = "team") List<Member> findEntityGraphByUsername(@Param("username")String username);이번 강의를 복습하다 보니까 강사님께서 @Param을 사용하셨더라구요.(강의 20:59)findByAge(), findOptionalByUsername()과 같은 메소드는 @Param 애노테이션 없이도 잘 동작 했는데 따로 특별한 이유가 있는 것일까요?
-
미해결실전! Querydsl
fetchResult() deprecated
됐던데 앞으로는 강의의 searchPageComplex와 같은 방법 (content따로, total따로)으로만 구현하고 사용하면 되는 건가요 ?searchPageSimple 부분은 필요가 없는 건가요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리 문제 정답인 것 같은데 뭐가 문제인지 잘 모르겠습니다..
import java.util.Scanner; public class Main { public static void main(String[] args) { Main t = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[][] arr = new int[n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { arr[i][j] = kb.nextInt(); } } System.out.println(t.solution(n, arr)); } public int solution(int n, int[][] arr) { int answer = 0; boolean isTop; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { isTop = true; int center = arr[i][j]; if (i != 0) //상 if (arr[i - 1][j] > center) isTop = false; if (i != n - 1) //하 if (arr[i + 1][j] > center) isTop = false; if (j != 0) //좌 if (arr[i][j - 1] > center) isTop = false; if (j != n - 1) //우 if (arr[i][j + 1] > center) isTop = false; if (isTop) answer++; } } return answer; } }정답은 잘 나오는 것 같은데.. 채점받으면 오답이라 나옵니다.. 무엇이 문제일까요? ㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
완성된 코드 자료를 그대로 실행했는데 오류가 발생합니다..
완성된 코드 그대로 서버를 실행했는데 이렇게 오류가 발생합니다.. 이유를 찾지 못해 질문드립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[에러] Database not found에 관해서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요메인어플리케이션을 실행시 에러가 발생하여 질문남깁니다.해당에러는 다음과 같습니다.하지만 해당경로에는 아래와 같이 파일이 존재하구요다른 글들을 참고해봤지만 에러가 해결되지 않아서 글을 남깁니다. 감사합니다.githubhttps://github.com/heechanCho/jpashop
-
미해결실전! Querydsl
tuple자료구조가 어떻게 되어 있는 건가요 ?
@Test public void tupleProjection() throws Exception { List<Tuple> result = queryFactory .select(member.username, member.age) .from(member) .fetch(); System.out.println("result = " + result); for (Tuple tuple : result) { String username = tuple.get(member.username); Integer age = tuple.get(member.age); System.out.println("username = " + username); System.out.println("age = " + age); } } result = [[member1, 10], [member2, 20], [member3, 30], [member4, 40]]username = member1age = 10username = member2age = 20username = member3age = 30username = member4age = 40 출력값이 위와 같은데 .get()메소드로 꺼내는 걸로 보면 Map과 같은 자료구조인건가 싶기도 하면서, 통째로 출력하면 List<List<>>와 같은 자료구조의 모습이더라구요tuple은 어떤 자료구조인가요?
-
해결됨실전! 스프링 데이터 JPA
@GeneratedValue 질문하고싶어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GeneratedValue에서 지금은 autoincrement로숫자로 단순히 pk값이 1/2/3/4이런식으로 사용되고있는데MEMBER00001/MEMBER00002/MEMBER00003같이 PK값에 특정한 문자열이 앞에 들어가는경우는 어떻게하나요?
-
미해결실전! Querydsl
join메서드 궁금증입니다 ..
List<Member> result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch();위의 QueryDSL문을 sql문으로 번역하면 select * from member as m join team as t on m.team_id = t.team_id where t.name='teamA' 가 맞나요? 관계형DB를 객체 다루듯이 사용하기 위해 Member안에는 Team 클래스가 있고, Team 클래스 안에는 Member 클래스가 있지만 실제로는 .join(member.team, team)와 같은 코드를 작성하면 내부적으론 DB의 테이블에 가서 외래키와 기본키를 비교해서 값을 가져오는 건가요 ?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의 내용에서 스키마 자동 생성 부분이 안되는데 어떤 게 문제일까요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자바 ORM 표준 JPA 프로그래밍 - 기본편 14강 내용 중에 기존에 ID와 NAME만 있던 것에 ppt 내용대로 새롭게 추가하였는데 스키마가 변경된 테이블에 따라 자동으로 생성이 되지 않는데 해당 테이블을 drop 하고 실행하면 될까요?
-
해결됨백엔드 프레임워크 만들기 (개정판)
inflearn08 프로젝트에서 FW_VIEW 테이블이 KEY라는 칼럼이 없다고 해요.
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table FW_VIEW has no column named KEY) at org.sqlite.core.DB.newSQLException(DB.java:1179) at org.sqlite.core.DB.newSQLException(DB.java:1190) at org.sqlite.core.DB.throwex(DB.java:1150) at org.sqlite.core.NativeDB.prepare_utf8(Native Method) at org.sqlite.core.NativeDB.prepare(NativeDB.java:126) at org.sqlite.core.DB.prepare(DB.java:264) at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:46) at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:31) at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:25) at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:34) at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:226) at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:206) at com.code5.fw.db.Transaction.prepareStatement(Transaction.java:107) at com.code5.fw.db.SqlRunner.executeSql(SqlRunner.java:408) at com.code5.fw.db.Sql.executeSql(Sql.java:54) at com.code5.fw.db.Sql.executeSql(Sql.java:65) at com.biz.InitCode5DBByDev.main(InitCode5DBByDev.java:45)Mac M1 사용중이고 Sqlite를 3.41.2.1로 받아서 사용중입니다. 경험이 부족하니 어떤 SQL 구문이 문제인지 모르겠네요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
treat 관련 질문이 있습니다.
JOINED 전략을 명시한 Item 클래스와그런 Item 클래스를 상속한 Album, Book, Movie 클래스를 생성 후 코드를 다음과 같이 작성했습니다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //애플리케이션 전체 공유 (persistence.xml 참조) EntityManager em = emf.createEntityManager(); //한번 쓰고 버려야함, 쓰레드간 공유하지 않음 EntityTransaction tx = em.getTransaction(); //조회를 제외한 DML 작업시 필수로 사용 tx.begin(); try { Album album = new Album(); album.setName("album"); album.setPrice(10000); album.setArtist("artist"); em.persist(album); Book book = new Book(); book.setName("book"); book.setPrice(20000); book.setAuthor("author"); book.setIsbn("isbn"); em.persist(book); Movie movie = new Movie(); movie.setName("movie"); movie.setPrice(30000); movie.setDirector("director"); movie.setActor("actor"); em.persist(movie); em.flush(); em.clear(); //1번 String jpql = "select i from Item i where type(i) in (Book, Movie)"; List<Item> items = em.createQuery(jpql, Item.class).getResultList(); for (Item data : items) { System.out.println("data : " + data); } em.clear(); //2번 jpql = "select i from Item i where treat(i as Book).author = 'author'"; //SINGLE_TABLE에서는 되는데 JOINED에서는 안 먹힘 items = em.createQuery(jpql, Item.class).getResultList(); for (Item data : items) { System.out.println("data : " + data); } tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); } finally { em.close(); } emf.close();1번의 경우에는 다음과 같이 정상적으로 동작합니다.Hibernate: /* select i from Item i where type(i) in (Book, Movie) */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_1.artist, i1_2.author, i1_2.isbn, i1_3.actor, i1_3.director from Item i1_0 left join Album i1_1 on i1_0.Id=i1_1.Id left join Book i1_2 on i1_0.Id=i1_2.Id left join Movie i1_3 on i1_0.Id=i1_3.Id where i1_0.DTYPE in('B','M') data : Book(author=author, isbn=isbn) data : Movie(director=director, actor=actor)그런데 2번의 경우에는 다음과 같은 현상이 발생하고 있습니다.Hibernate: /* select i from Item i where treat(i as Book).author = 'author' */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_1.artist, i1_2.author, i1_2.isbn, i1_3.actor, i1_3.director from Item i1_0 join Book i1_2 on i1_0.Id=i1_2.Id where i1_2.author='author'존재하지 않는 i1_1과 i1_3을 참조있어서 오류가 나는데왜 이런 현상이 발생하는지 궁금합니다. 그와 별개로 SINGLE_TABLE 전략을 사용했을 때2번을 실행하면 저같은 경우에는 다음과 같은 쿼리가 실행됩니다.Hibernate: /* select i from Item i where treat(i as Book).author = 'author' */ select i1_0.Id, i1_0.DTYPE, i1_0.name, i1_0.price, i1_0.artist, i1_0.author, i1_0.isbn, i1_0.actor, i1_0.director from (select * from Item t where t.DTYPE='B') i1_0 where i1_0.author='author' 그런데 강사님께서 제공해주신 pdf 파일에 보면원래는 쿼리가 다음과 같이 실행된다고 말씀해주셨는데select i.* from Item i where i.DTYPE = ‘B’ and i.author = ‘kim’제가 sql 실행했을 때와 강사님이 적어주신 sql이다른 이유가 제 생각에는 하이버네이트 버전차이때문일것 같긴한데 혹시 제 생각이 맞는지 질문드리고 싶습니다.※ 저는 하이버네이트 6버전을 쓰고 있습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 범위 관련해서 궁금한 점이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]테스트 범위 관련해서 궁금한 점이 있습니다. 영한님 강의 들어보면, 보통 controller-service-repository 구조인데, , 보통 service만 하시나요? controller, repository 다하시나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품등록 조회가 되지 않아요
[질문 내용]여기에 질문 내용을 남겨주세요.회원가입과 회원 조회는 문제없이 되는데상품등록은 작성은 되지만 db에 담기지도 않고 그래서 조회도 안됩니다 ㅠㅠ 상품등록 조회 영상 코드가 잘못인가 하고 복붙을 했는데도 안됩니다 ㅠㅠ무엇이 문제일까요??ㅠㅠ]제가 지금 야생형으로 따라 하고있어서 아무것도 몰라서 어느부분이 문제인지 알수없어서 남겨봅니다
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
페치 조인 한계 - 둘 이상의 컬렉션은 페치 조인 할 수 없다
안녕하세요, '페치 조인 2 - 한계' 강의를 듣던 도중, 잘 이해가 되지 않는 부분이 있습니다. '페치 조인 2 - 한계' 강의 (6분 44초) 에서 다음과 같이 '둘 이상의 컬렉션은 페치 조인 할 수 없다' 라고 말씀해주셨습니다.제가 궁금한 점은, 이후 '실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화' 강의에서, /api/v3/orders api에서 아래와 같이 페치 조인을 하는 예시를 설명해주셨습니다.해당 api를 통해 페이징이 불가능하다는 것은 이해하였고 BatchSize를 통해 페이징이 가능한 형태로 최적화하는 방법은 이해하였습니다만, 둘 이상의 컬렉션을 페치 조인 할 수 없다고 말씀하신 부분은 잘 이해가 되지 않아서 이렇게 질문을 드립니다. 말씀해주신 둘 이상의 컬렉션이 다른 의미를 내포하는 것인지, 아니면 둘 이상의 컬렉션을 페치 조인할 수는 있지만, 최대한 지양해야 하는 것으로 이해하면 될지 궁금합니다. '실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화' 강의 내용이지만, 페치 조인의 한계에 대한 의문점이라서 본 강의에 질문을 드립니다. 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의때 들었던 내용을 블로그 같은걸로 작성해도 되는지 궁금합니다.
안녕하세요 취업한지 1년반정도된 주니어 개발자입니다.취업하기 이전에는 취미삼아 깃허브에블로그를 만들어서 pre에 코드프리터같은걸로 간단하게 개인 공부노트같이 만들어서 쓰고 있었는데취업하고 나서는 회사에서 운영 및 유지보수 위주로만 작업하고 그래도 최근에 플러터로 앱 제작을 하나 하긴했었지만 끝난지 벌써 몇달이 되면서 개발 자체에 흥미가 떨어진 상태였는데 최근에 아는 형이 강사님의 JPA 강의를 다시 보면서 공부에 재미를 다시 붙이고 있습니다.제 블로그를 보는 사람이 있으려나 모르겠지만최근에 마크다운으로도 깃허브 블로그를 쓸 수 있다는 것을 알고 기존의 pre로 작성된 게시글들을 md파일로 변경하는 작업을 하고 있습니다.그래서 이번 작업이 끝난 뒤 로드맵을 완강하면 정리해서 블로그에 쓸려고 했었는데 아까 말씀드린 형의 말로는강의같은거는 저작권때문에 문제가 생길수 있다고 들었습니다. 만약 개인적으로 블로그에 쓰고 싶을때는 어떤식으로 허락을 맡아야 게시글로 쓸수 있는지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 빌드 실행 오류
아래 화면으로 오류가 뜨는데 java 버전이 잘못돼서 그런걸까요?인텔리제이를 실행하려면 설정해야하는 환경들이 어떻게 되는지 알 수 있을까요? - Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.5 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 11) - 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.6.1') - Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.5 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 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.1')
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
제공되는 html 파일을 사용해도 될까요?
QueryDSL까지 강의를 다 듣고 난 이후에 게시판이나 쇼핑몰 같은 포트폴리오를 만들기전에 자그맣게 배운걸 써보고 싶은데 html,css,js를 모르다보니 view쪽을 처리할 수가 없더라구요.그래서 혹시 활용1편에 제공되는 HelloShop view단 파일을 사용해도 될지 궁금합니다. 깃허브에 올리려고 하고 백엔드단 코드는 전부 스스로 짤 생각입니다.!
-
미해결실전! 스프링 데이터 JPA
지연로딩과 fetchJoin 성능 차이
즉시로딩을 사용하면 Member 객체를 불러 올 때 1+N문제가 발생하고 Lazy로딩을 사용하면 Team 객체를 사용할 때 쿼리문이 나가서 즉시로딩이든 지연로딩이든 결국 1+N 문제가 생기는 게 맞나요 ? 이 1+N 문제의 해결방법으로 fetchJoin이 나온 것 같은데 지연 로딩, 즉시 로딩보다 무조건 fetchJoin이 이점이 있는 것 아닌가요? 왜 디폴트값으로 지연로딩으로 설정하고 fetchJoin을 선택해서 사용하는지 궁금합니다. 기본적으로 fetchJoin을 사용하고 연관관계에 있는 객체를 사용하지 않을 것 같은 경우에만 지연로딩을 선택적으로 사용하는게 더 편하지 않나요? 사용하지 않는 객체를 가져오는 fetchJoin의 쿼리문 몇 줄이 성능에 그렇게 큰 영향을 미치나요?