묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
Where 다중 파라미터 사용, Null 처리관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 :) 계묘년 새해 복 많이 받으시길 바랍니다. 강의 도중 allEq와 같은 메서드를 where()메서드에 넣게 되면 null 체크를 주의해야 한다고 하셔서 여러가지 Test를 돌려보았는데요 그 결과, return usernameEq(usernameCond).and(ageEq(ageCond));와 같이 체이닝을 하게되면 제일 첫 번째 메서드(여기서는 usernameEq(usernameCond))가 null일 경우 NullPointerException이 발생하는 것을 알았습니다.이걸 어떤 방식으로 처리해야할까요? 맨앞에 있는 것이 null인지 체크하고 그것을 제외한 조건들만 return 하는 방법도 생각했으나, 이 역시도 조건이 여러개라면 다시 첫번째 조건이 null인지 체크해야한다는 맹점이 있어서, 코드가 길어질것 같다는 생각이 듭니다.통상적으로 이런 경우 어떻게 대처하는 지 알려주시면 감사하겠습니다!다시 한 번 새해복 많이 받으세요!
-
미해결스프링 시큐리티 OAuth2
keycloack userinfo 403 forbidden error
https://www.inflearn.com/questions/693312/profile-email-%EA%B6%8C%ED%95%9C%ED%8E%98%EC%9D%B4%EC%A7%80%EA%B0%80-%EB%82%98%EC%98%A4%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4 해당 페이지에 있는 해결 방법 그대로consent required를 킨 후에access token을 받아오는 것 까지는 잘 되는데,마찬가지로 userinfo 요청시http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo에 Authorization에 Bearer Token타입 체크 후Token값도 받아온 access_token값으로 잘 넣어줬는데도403 forbidden 에러가 뜨네요무엇이 잘못된걸까요keycloack버전은 20.0.2입니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
${member.id} ${member.name}의 member가 어떻게 domain.Member에서 오는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]html코드 중 <tr th:each="member : ${members}">의 members는 controller 코드의 members로부터 오는 것으로 알고 있습니다. List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; 그런데 members의 값이 memberService.findMembers(); 부터 오는 것이여서 MemoryMemberRepository.java의 findAll()를 찾아봤습니다.@Override public List<Member> findAll() { return new ArrayList<>(store.values()); }여기서 values() method로 인해서 map의 값만 추출되어 list로 변환해서 받는 것으로 알고 있습니다.그래서 저는 controller의 members가 값만 list로 나열된 것으로 생각했는데 memberList.html에서 "member : ${members}"member가 list의 value가 아닌 domain.Member class라는 것이 잘 이해가 안됩니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
나도 코딩님 안녕하세요 !
자바 강의 잘 듣고 있습니다! 저 같은 경우는 자바는 처음이 아니지만 이번 기회에 자바를 되돌아보려고 강의를 구매하게 되었습니다 !! 다름이 아니오라 공부한것을 개인 블로그에 작성하고 싶은데 출처 밝히고 올려도 될까요 ?? 출처 예시도 알려주시면 감사하겠습니다 !!
-
미해결스프링 데이터 JPA
comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?
다른 테이블을 추가로 만들어서 post table에 매핑을 해봤더니 id값이 3부터 시작하더라구요?id값은 각 테이블 pk라서 각 테이블 처음인 1부터시작해야하는것아닌가요? 이게 Generatevalue 어노테이션과 관계가있는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
updateItemDto
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.새해 복 많이 받으세요 !열심히 강의를 수강중인 학생 입니다.updateItemDTO 관련하여 궁금한게 생겨서 문의 남깁니다.영한님이 말씀해주신 의견에 따라 소스를 변경해보았습니다.Controller updateItemDto (service package안에 뒀습니다)ServiceItembook소스는 이런식으로 변경해서 잘 동작 하는 것 확인 했습니다. 궁금점영한님이 다른 분에게 남겨 준 글을 봤을 때DTO가 생성되는 계층에 dto class를 작성하라고 쓰여있었습니다.저의 소스 같은 경우 Controller 에서 인스턴스화 되고 있는데 이럴 때는 Controller 밑에 dto package를 만들었어야 하는건가요? Service 쪽에서 Item findItem = itemRepository.findOne(itemId); findItem.changeItem(updateItemDto);이 로직을 실행하게 되면 Book, Album , Movie 다 똑같이 changeItem override 해주었습니다. 이후에 Controller에서 Album , Movie 에 필요한 필드 값 세팅 후 Service로 넘겼습니다. 3개의 자식 중에 Book 호출 되게 되는데 이 점이 궁금합니다(기본적인 자바 지식 일수도 있지만, 구글링을 하여도 적합한 글을 찾지 못해서 글 남겼습니다) 3. 2번과 이어지는 질문인데, 혹시 movie , album , book 을 다 수정할 수 있게 된다면 어떤 식으로 구성해야 좋은지 궁금합니다!4.처음 view에서 넘겨 받은 BookForm을 itemService.updateItem()인자로 넘기지 않고 중간에 변환해서 넘긴 이유가 궁금합니다! 5번 질문과 같은 맥락일까요5.service 계층에서 dto를 의존하게 되는 경우는 어떤 경우인지도 궁금합니다 !좋은 강의 잘 보고 있습니다.항상 감사합니다!
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
전달값(Parameter) 강의에서 for문 이해가 필요합니다
안녕하세요 나도코딩님 새해복 많이받으세요!전달값(Parameter) 강의 듣고있는데public static void powerByExp(int number, int exponent) { // 전달값을 2개 받는경우 int result = 1; for (int i = 0; i < exponent; i++) { result = result * number; } System.out.println(number + " 의 " + exponent + " 승은 " + result); powerByExp(3,3); // 3 * 3 * 3 = 8여기서 for문의 사용법이 이해가 안가는데 result = result * number;3의 3승을 한다고했을때3 * 1, 3 * 3, 9 * 3는 이렇게 3번 계산하는거잖아요?그러면 이걸 출력한다고하면System.out.println(number + " 의 " + exponent + " 승은 " + result); result는 27이 나오는데 마지막 9 * 3 만 result라고 해석하는건가요?3*1, 3*3 은 왜 result 라고 해석을 안하는건가요?매소드 너무 어렵습니다.. ㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
sequence방식 allocationSize 관련 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]allocationSize를 50정도로 설정해서 여러서버에서 사용하더라도 동시성 이슈 없이 사용한다고 하셔서 생각해봤는데...sequence를 얻기위해 호출시에 50씩 증가되서 메모리에 가지고 있고 여러 서버에서 자주 호출되는 서비스의 경우 중간에 빈 숫자가 정말 많을 것 같습니다;;1번의 트랜잭션에서 다음시퀀스를 받아오는 쿼리를 여러번 수행하는게(allocationsize를 1로 해두고 여러번 nextval 여러번 수행) 성능상으로 차이가 클까요?실제 배민과 같이 트래픽이 많은 현업에서도 50정도로 잡아서 사용하는지 궁금합니다!(long사이즈도 결국 한계가 있지 않나요?ㅠㅠ)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
빌더패턴 사용시 연관관계ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
안녕하세요 ㅠㅠ 빌더패턴 사용시 이런식으로 구성하려고하는데요. 이렇게해서 INSERT를 하면 NULL로 받습니다. 그래서이렇게 putOrder메소드를 만들어서 빌더패턴안에 포문으로 돌려서 해결했는데 이런식으로 하는게 맞는지(?) 되는지(?) 궁금합니다. 또한https://www.inflearn.com/questions/419013/%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84-%ED%8E%B8%EC%9D%98-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%83%9D%EC%84%B1-%EB%A9%94%EC%86%8C%EB%93%9C%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A0%A4%EC%9A%94 여기서 질문한 것 역시 봤었는데,왜 저는 저렇게 안되는 걸까요?? @@무슨 차이가 있는 걸까요???
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
LettuceLockStockFacadeTest를 다시 실행하면 왜 실패가 날까요?
test가 정상으로 처리되어 redisson을 추가하여 test하였습니다.RedissonLockStockFacadeTest는 이상이 없는데LettuceLockStockFacadeTest를 재시도 한 결과 실패가 됩니다.원인을 찾아보려고 다 다시 만들어봤지만 동일한 이슈가 발생하여습니다. 무엇이 문제일까요?redisson의 종속성을 삭제하고 돌리면 이상이 없음을 확인하였습니다. LettuceLockStockFacade 컴포넌트 와RedissonLockStockFacade 컴포넌트는 함께 사용할 수 는 없나요?또한 그 이유가 무엇인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 오류
다음과 같은 오류로 구글링 한 결과구글링에서 위 두가지 방법을 알려줘서 했더니 그래도 오류가 나서 문의드립니다..ㅜㅜ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성 단계, build.gradle 오픈시 오류
build.gradle를 오픈하자마자 다음과 같은 오류가 뜹니다ㅜㅜ 자바는 11버전 설치했고 강의 제일 처음, build.gradle부터 오픈하자마자 저런 오류가 났고 아무것도 안건들었습니다. <오류코드>- 일부만 가져왔습니다.A problem occurred configuring root project 'hello-spring'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 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')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 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')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 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')- Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.6')
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
배치사이즈 질문
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 16:29 질문입니다.<property name="hibernate.jdbc.batch_size" value="10"/>이 부분이 햇갈립니다..이걸 하냐 안하냐 차이가(쓰기지연시)위 설정을 하면 DB 커넥션 한번에 10개의 쿼리를 보내준다는거고 위 설정을 안하면 쓰기지연 모드가 발동시 10번의 커넥션이 이루어 진다고 생각하면 되나요 ??
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
강의 보면서 공부한 내용 블로그에 작성 가능할까요?
요즘 공부한 내용 블로그에 작성하면서 공부하고 있는데 혹시 저작권같은 문제가 있을까봐 여쭤봅니다..추가로 혹시 스프링 강의 올리실 계획은 있으신지도 궁금합니다
-
미해결더 자바, 애플리케이션을 테스트하는 다양한 방법
동시성 테스트는 어떻게 작성해야하는지 궁금합니다.
안녕하세요. 올려주시는 강의 잘듣고 도움 많이 받아 항상 감사드립니다.@Transactional의 isolation, propagation 옵션에 대한 공부를 위한 학습 테스트를 작성해보고 싶은데요. (실제 업무에서도 동시성과 관련된 테스트 커버리지를 향상시키고 싶습니다)두 개의 쓰레드가 하나의 인스턴스에 동시에 접근하는 케이스에 대한 테스트를 작성하고 싶습니다. TransactionManager를 직접 핸들링하는건 올바른 방법은 아닐 것이라고 생각하는데, 테스트 코드 작성 단계에서 동시성 테스트를 지원하는 기능이 있을까요?JUnit5나 Mockito 라이브러리만을 활용해서 해결할 수 있는 방법이 있을지 궁금하여 질문드립니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 실행 안됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "java.net.UnknownHostException: ?��채린: ?��?���? ?��?��?���? ?� h2.bat파일을 실행하면 cmd창에 위와 같이 뜨면서 localhost:8082에 접속하면위의 사진 같은 에러가 납니다.인프런의 모든 질문을 읽어봐도 저처럼 UnknownHostException 오류가 난 사람은 없어서 질문합니다!(환경변수 설정부터 재부팅, 재설치, 모든 행동을 다 해보았습니다..)
-
해결됨실전! 스프링 데이터 JPA
Auditing 질문 드립니다
안녕하세요! 생성 시간, 수정 시간을 JPA Auditing으로 관리하는 것과 db에서 default, on update 조건으로 관리하는 것이 어떤 차이가 있는지 궁금합니다..!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
임베디드 타입과 enum타입의 차이점이 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]안녕하세요 임베디드 타입 영상을 보다가 enum타입과 비슷한것 같은데 궁금한 점이 생겨서 질문드립니다. <참고용 예제로 붙여 둔 코드 입니다.>@Getter @RequiredArgsConstructor public enum PersonalPositionStatus { ST("최전방 공격수"), RW("우측 공격수"), LW("좌측 공격수"), CAM("공격형 미드필더"), CM("중앙 미드필더"), CDM("수비형 미드필더"), RB("우측 수비수"), RCB("우측 센터백"), LCB("좌측 센터백"), LB("좌측 수비수"), GK("골키퍼"); private final String value; @Entity @Getter public class TeamMemberInfo extends BaseTimeEntity { @Id @GeneratedValue @Column(name = "teamMemberInfo_id") private Long id; @Enumerated(EnumType.STRING) private PersonalPositionStatus preferPosition;위코드는 아래 조건들을 기준으로 만들었습니다회원이 어떤 포지션을 선호하는지 조사합니다.PersonalPositionStatus에서 최소1개에서 최대 3개까지 선택가능추후 선택된 값은 DB에 저장 강의를 보면서 @Enumerated(EnumType.STRINNG) private PersonalPositionStatus preferPostion@Embedded private PersonalPositionStatus preferPostion이렇게 둘 다 사용 가능할 것 같아서... 임베디드 타입과 enum타입의 차이점과 어떤 상황에서 사용해야하는지 궁금해져습니다enum은 미리 정의해둔 값을 선택해서 사용하기 위함이고임베디드 타입은 단일 엔티티로 나타내기 위함으로 이해하면될까요?
-
해결됨실전! Querydsl
컬렉션 엔티티 Lazy 초기화 질문드립니다.
안녕하세요. 서비스에서 select 해온 Entity에 toMany 연관관계 필드를 초기화 하는 부분에 대해 궁금해 질문드립니다.class AEntity{ @Id private Long id; @OneToMany(mappedBy=aEntity) private List<BEntity> bEntitise = new ArrayList<>(): }class BEntity{ @Id private Long id; @ManyToOne(fetch = FetchType.Lazy) @JoinColumn(name="a_id") private AEntity aEntity; }이렇게 서로 양방향인 엔티티가 있다고 했을 때class AService{ public AEntity findEntity(Long id){ AEntity findEntity = aRepository.findById(id).get(); //findEntity의 BEntityList를 lazy 초기화 하기 위한 코드 findEntity.getBEntities().size(); return findEntity; } }서비스에서 엔티티를 찾아 컨트롤러로 리턴해주어 컨트롤러에서 dto로 변환 후, Body에 담아 보여주고 있습니다.그런데 findEntity의 BEntities 필드를 서비스에서 초기화 시켜준 후 컨트롤러에서 DTO로 변환해야 LazyInitializationException이 발생하지 않아서 findEntity.getBEntities().size();이렇게 초기화를 해주는 코드를 작성하였는데해당 코드가 뜬금없이 들어가 있는 느낌이라 보통 컬렉션 Lazy 엔티티를 초기화할 때 저렇게 사용해도 되는지 궁금해서 질문드립니다.(fetch 조인은 사용하지 않는다는 가정입니다.)
-
미해결더 자바, Java 8
static 과 metaspace 관련 질문있습니다.
자바 8 이후, permgen이 metaspace로 대체되면서 static과 string 상수 풀이 heap 영역에서 관리되는 것으로 변경되었다고 알고 있습니다. 하지만 실제로 구글등과 각종 유튜브 설명들을 찾아본 결과 해당 내용을 서로 다른 두 가지 내용으로 설명하여 어떤 것이 맞는지 몰라 이렇게 질문드리게 되었습니다.(위의 사진은 static 변수가 method 영역에 속한다고 함)첫번째 설명입니다.jdk의 설명중 class statics를 static object로 번역하여, static 변수와 메서드는 Method 영역(metaspace)에 이전과 동일하게 있고 static object(static A a = new A();)들만 heap으로 이동했다. 두번째 설명입니다.static이 붙은 모든 static 변수(primitive 타입, static int a = 1;)과 static 메서드, static object 등이 모두 heap 영역으로 이동했다. 둘 중 어느 설명이 맡는 것인지 질문드리고 싶습니다.