학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 어찌저찌 하다가 콜라볼를 이용해서 만들기는 하였는데 이렇게 코드로 만들어도 되는지 궁금해서 질문을 드립니다. 콜라볼에 Lsit값을 넣어서 , 심플한 callable 리스트를 만들었는데 이렇게 활용해도 되는지 알고 싶어서 코드를 올립니다. 이렇게 만들어도 되냐요? 답변 부탁드립니다.
이전엔 자동 완성을 시키면 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserV2 user = (UserV2) o; return Objects.equals(id, user.id); } 이 코드였던거같은데 현재는 이렇게 생성이 됩니다. @Override public boolean equals(Object object) { if (object == null || getClass() != object.getClass()) return false; UserV2 userV2 = (UserV2) object; return Objects.equals(id, userV2.id); } IDE 작동 방식에 변화가 생긴걸까요? 아니면 제가 설정을 무엇인가 잘못 건드린걸까요
1. 처음 em.persist()를 할떄 allocation했던거 만큼의 시퀀스 값을 미리 가져와서 메모리에 값을 저장해놓는다. 이떄 1부터 50의 값이 메모리에 저장된다. 2. db에 시퀀스의 값(현재값)은 50까지 줬으니 51로 되어있다. 3. 이후 em.persist()를 하면 메모리에 있는 값이 사용되고, 만약 50까지 다 사용하고 나서 em.persist()를하게 되면 51부터 다시 allocation했던거 만큼의 시퀀스 값을 미리 가져와서 메모리에 값을 저장해놓는다. 이때 51부터 100의 값이 메모리에 저장된다. db에 시퀀스의 값(현재값)은 100까지 줬으니 101로 되어있다. 이러한 동작 과정으로 이해를 했는데요. 이렇게 이해하는게 맞을까요? + 근데 그럼 여쭤보고 싶은게 em.persist()를 한번만 할 경우, call next value for MEMBER_SEQ5를 한번만 호출하고 이런식으로 되어있지만, em.persist()를 2번 이상으로 하게되면, call next value for MEMBER_SEQ5를 두번 호출하고 이런식으로 되더라구요... 그 이유를 도무지 모르겠습니다..
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 섹션 6 -문제와 풀이 2 에 나온 문제를 간략하게 그림으로 도식화해보았습니다. 제가 이해하고 있는게 맞는지 확인 부탁드려도 괜찮을까요? 감사합니다.
package study.array.ex; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] productNames = new String[10]; int[] productPrice = new int[10]; int productCount = 0; while (true) { System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료"); System.out.print("메뉴를 선택하세요 : "); int option = sc.nextInt(); sc.nextLine(); switch(option) { case 1: if(productCount != 10){ System.out.print("상품 이름을 입력하세요 : "); productNames[productCount] = sc.nextLine(); System.out.print("상품 가격을 입력하세요 : "); productPrice[productCount] = sc.nextInt(); productCount++; } else System.out.println("더 이상 상품을 등록할 수 없습니다."); break; case 2: if(productCount != 0) { for (int i = 0; i < productCount; i++) { System.out.print(productNames[i] + " -> " + productPrice[i]); System.out.println(); } } else { System.out.println("등록된 상품이 없습니다."); } break; case 3: System.out.println("프로그램을 종료합니다."); System.exit(0); } } } } 마지막 문제풀이때 for문을 사용하지 않고 switch문을 사용하여서 풀었는데 어떠한 상황에서 FOR문을 사용해야 더 개선된 코드인지 SWITCH문을 사용해야 더 개선된 코드인지 분별이 잘 안갑니다. 이런 문제풀이때는 어떤걸 사용해야 하나요??
[질문 내용] 여기에 질문 내용을 남겨주세요. package study.array.ex; import java.util.Scanner; public class ArrayExRef6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int[] numbers = new int[scanner.nextInt()]; System.out.println(numbers.length +"개의 정수를 입력하세요:"); // 입력 for (int i = 0; i < numbers.length; i++) { numbers[i] = scanner.nextInt(); } int min, max; min = max = numbers[0]; // 가장 작은 정수 for (int number : numbers) { if(min > number) min = number; } // 가장 큰 정수 for (int number : numbers) { if(max < number) max = number; } // 출력 System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } } 선생님의 기존 코드와 비교했을때 이런 로직으로 짜는것은 가독성이나 효율성(비효율적인 반복문 사용)이 떨어지는 코드일까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @RestController @RequiredArgsConstructor public class MemberController { // 도메인 클래스 컨버터 private final MemberRepository memberRepository; @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id){ Member member = memberRepository.findById(id).get(); return member.getUsername(); } @GetMapping("/members2/{id}") public String findMember2(@PathVariable("id") Member member){ return member.getUsername(); } @PostConstruct public void init(){ memberRepository.save(new Member("userA")); } } MemberController 에서 @PostConstruct 부분을 보면, save 메소드가 보입니다. 일반적인 경우를 생각해보면, 서비스 계층에 @Transactional 이 붙어있고, 트랜잭션이 걸려있는 메소드를 통해서 리포지토리의 save 를 호출하니 리포지토리에도 트랜잭션이 걸려있다고 할 수 있을 것 같습니다. 그런데 위와 같은 경우에서는 리포지토리에 트랜잭션이 안 걸려있습니다. JpaRepository 의 상위 인터페이스나 클래스를 찾아가면서 save 에 트랜잭션이 걸려있는지 확인을 해보았으나 없었습니다. 그렇다면 트랜잭션이 걸려있지 않은데, 어떻게, 어떤 시점에 커밋이 이루어져서 db 에 반영이 된 것인지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. 이번에 스프링을 듣고 있는 취준생입니다. 자바 스프링으로 취업준비하기 위해 듣고 있는데 스프링과 스프링부트 로드맵을 위주로 강의를 들으려고 하고 있습니다. 근데 자바가 익숙치 않아서 김영한님의 자바강의를 보고 있는데 자바는 어느정도 강의까지 들으면서 익혀야 스프링과 스프링부트 Jquery에 익숙하게 학습이 가능할까요? 너무 질문 수준이 낮아서 죄송합니다...
[질문 내용] 기본 키 매핑 4분 10초 쯤에 id 필드에 @GeneratedValue() 어노테이션의 기본전략을 IDENTITY로 바꾸시고 실행을 하였을 때 김영한 강사님께서는 id 필드의 타입이 String이었습니다. 그런데 에러없이 잘 실행되더라고요. 그래서 저도 같은 코드에 실행을 하였을때는 에러가 나오고 아래에 콘솔에 나온 로그처럼 DDL이 실행이 에러난다고 표시가 나서 해결법을 찾는 과정에서 String타입을 Long타입으로 고치니 다시 재실행하였을 때 문제없이 DB에 잘 반영이 되었습니다. 어떤 차이로 이렇게 결과가 다른건지 궁금합니다. WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Member ( id varchar(255) generated by default as identity, name varchar(255) not null, primary key (id) )" via JDBC [Feature not supported: "CHARACTER VARYING(255)";] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Member ( id varchar(255) generated by default as identity, name varchar(255) not null, primary key (id) )" via JDBC [Feature not supported: "CHARACTER VARYING(255)";] at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createTables(SchemaCreatorImpl.java:420) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createSequencesTablesConstraints(SchemaCreatorImpl.java:340) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:239) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145) at java.base/java.util.HashMap.forEach(HashMap.java:1421) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:142) at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:315) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build (SessionFactoryBuilderImpl.java:450) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build (EntityManagerFactoryBuilderImpl.java:1507) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:55) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:80) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at hellojpa.JpaMain.main(JpaMain.java:10) Caused by: org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "CHARACTER VARYING(255)"; SQL statement: create table Member ( id varchar(255) generated by default as identity, name varchar(255) not null, [50100-232] at org.h2.message.DbException.getJdbcSQLException(DbException.java:568) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.message.DbException.getUnsupportedException(DbException.java:287) at org.h2.command.ddl.SequenceOptions.getBounds(SequenceOptions.java:316) at org.h2.command.ddl.SequenceOptions.getBounds(SequenceOptions.java:244) at org.h2.schema.Sequence.<init>(Sequence.java:100) at org.h2.table.Column.initializeSequence(Column.java:502) at org.h2.command.ddl.CommandWithColumns.generateSequences(CommandWithColumns.java:103) at org.h2.command.ddl.CreateTable.update(CreateTable.java:113) at org.h2.command.CommandContainer.update(CommandContainer.java:139) at org.h2.command.Command.executeUpdate(Command.java:304) at org.h2.command.Command.executeUpdate(Command.java:248) at org.h2.server.TcpServerThread.process(TcpServerThread.java:386) at org.h2.server.TcpServerThread.run(TcpServerThread.java:193) at java.base/ java.lang.Thread.run (Thread.java:842) at org.h2.message.DbException.getJdbcSQLException(DbException.java:568) at org.h2.engine.SessionRemote.readException(SessionRemote.java:650) at org.h2.engine.SessionRemote.done(SessionRemote.java:619) at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:237) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:262) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:231) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ... 21 more
안녕하세요. 강의 잘 듣고 있습니다. 입문자들은 역정규화보단 정석적인 방법대로 하는 게 좋다고 하셨는데, 실제 현업에서 오래 일을 하셨던 분들이라 해도 뭔가를 처음 설계할 땐 중복을 없애는 방식으로 설계하고, 실제로 성능 등에 문제가 생기면 그때 역정규화를 고려하나요? 역정규화 자체가 처음 설계 때는 잘 안 하는 건지 궁금합니다.
1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 안녕하세요, 강의 너무 잘 보고 있습니다. Data dataA = new Data(); 부분에서 궁금한 점이 생겨 여쭤보게 되었습니다. dataA 라는 것은 저는 인스턴스가 생성될 때 인스턴스의 이름인 줄 알았는데 이것은 인스턴스의 이름이 아니라 참조 변수의 이름이 맞는지가 궁금합니다. 그리고, 실질적으로 인스턴스가 생성되는 부분은 dataA 부분이 아니라 new Data () 쪽에서 인스턴스가 생기는지와, 그렇게 되면 생성된 인스턴스 자체에는 이름이 없는지가 궁금합니다. 좋은 강의 제공해주셔서 항상 감사드립니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 교재 판매는 없고, pdf파일 직접 프린팅 하는 것만 있는 거죠?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (네) <- 해결이 안 됨 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 윈도우에서 gradlew build 오류가 뜨는데 해결 방법을 모르겠습니다. 자바 버전이 문제인가 싶어 확인해 봤는데, 인텔리제이랑 cmd에선 21 버전으로 뜹니다. 근데 gradlew build 명령어를 입력하면 작동이 되지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] mememberrepository를 작성한 이후 memberrepository에서 오류가 발생하고 있습니다