묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Access Denied for user ‘root’@’localhost’ (using password: YES)
몇시간동안 삽질해보고 여기 질문글도 뒤져봤는데 답이 없어서 결국 질문 드립니다 😂현재 진행 상황:✔️ 환경 세팅 완료✔️ 재고 감소 테스트 코드 작성전체 애플리케이션을 실행 시키는데, Access Denied for user ‘root’@’localhost’ (using password: YES) 이런 에러가 뜨길래, MySQL 쪽을 계쏙 건드려보았습니다. 그래도 똑같더라고요 ,,제가 시도한 방법들 입니다:https://legend-danger-266.notion.site/Access-Denied-for-user-root-localhost-using-password-YES-e0f3cdec520843ed9767d7fec583b9b1혹시 원하시면 소스 압축해서 보내 드리겠습니다 ,, 🥲 도커 쪽 문제인지 어디인지 모르겠네요 도커 실행시키던 끄던 똑같은 에러가 발생하더라고요
-
해결됨그림으로 배우는 자바, 파트2: 객체지향!
연습문제 이클립스에서는 되는데요
public class SongTest { public static void main(String[] args) { Artist h1 = new Artist("유재하", "별헤는밤"); Artist h2 = new Artist("임재범", "비상"); Artist h3 = new Artist("박완규", "비밀"); Artist them[] = {h1, h2, h3}; for(int i=0; i<them.length; i++) { them[i].printStr(); } }}class Song { String singer; String song; Artist(String singer, String song) { this.singer = singer; this.song = song; } void printStr() { System.out.println("Song { name: " + singer + ", " + "song: " + song + " }"); }} 이거 이클립스에서는 컴파일오류 없이 돌아가는데클라우드 스터딩 사이트에서는 오류가 나네요뭐가 문제일까요? /root/var/tmp/2023_05_13_08_49_23_350d34e1/SongTest.java:21: error: invalid method declaration; return type requiredArtist(String singer, String song) {^1 error
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
id값을 Integer로 했을때
id값을 Integer로 했을때 10몇억 까지만 된다고 하셨는데 int는 최대 21억까지 저장 할 수있는거 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot resolve symbol 'name'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]cannot resolve symbol 'name'이라는 오류가 계속 떠요ㅜㅜ 뭐가 잘못된 건가요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
static inner class 에 대해 궁금합니다
안녕하세요.DTO를 static inner class로 작성했을 때 멀티스레딩 환경에서 동시성 위험이 있는지에 대해 궁금합니다. 예를 들어 아래와 같이 DTO를 작성하고 사용한다고 했을 때public class UserDto { public static class Request1 { int id; String name; @Builder private Request1(int id, String name){ this.id = id; this.name = name; } } public static class Request2 { private final int id; private final String name; @Builder private Request2(int id, String name){ this.id = id; this.name = name; } } }우선 기본적으로 static inner class의 경우 outer 클래스의 인스턴스가 뜨지 않아도 inner 클래스의 인스턴스를 띄울 수 있습니다. 그래서 Builder 패턴을 통해 Request1의 인스턴스를 생성한다면, 롬복의 @Builder를 까보면 결국 public static class RequestBuilder 에서 Request 객체를 만들고 이를 반환하는 방식으로 되어 있는데 반환하고 RequestBuilder 객체는 GC에 반환된다고 들었습니다. 어쨌든 그래서 Request1의 객체가 생성되면 멤버 변수가 final이 아니기에 수정될 여지가 존재하는데, Heap 메모리에 새로운 객체가 생길것이고 Heap 메모리에 생성된 객체가 수정될 수 있다면 다른 스레드가 객체의 상태를 변경할 수 있으니 thread-safe 하지 않을 수 있겠다는 생각이 들었습니다. 만약 Request2처럼 멤버 변수들을 final로 사용한다면 thread-safe 해질 수 있지 않나 라는 생각인데 맞는 생각인지 잘 모르겠어서 질문 남깁니다. 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
서비스 로직 질문입니다.
안녕하세요, 강사님. loanBook() 서비스 로직 관련 질문입니다. 강의를 듣기 전 혼자 작성해보았는데요,Book book = bookRepository.findByName(request.getBookName()); if(book == null) { throw new IllegalArgumentException("대출할 책이 존재하지 않습니다."); } UserLoanHistory userLoanHistory = userLoanHistoryRepository.findByBookName(book.getName()); if(userLoanHistory.getBookName() == request.getBookName()) { throw new IllegalArgumentException("이미 대출된 책 입니다."); } userLoanHistoryRepository.save(new UserLoanHistory(request.getUserName(), request.getBookName()));위와 같이 작성해보았습니다. 제가 생각한 로직은책이 존재하는지 찾고존재한다면, 책 이름으로 대출 도메인에서 정보 가져와서대출 정보의 책 이름과 대출하려는 책 이름이 같으면 예외처리를 하고대출이 가능하면 UserLoanHistory 객체를 저장한다.입니다. 하지만 userLoanHistoryRepository.findByBookName(book.getName()) 이 부분에서 findByBookName 메소드가 실행되지 않는 것 같습니다.(레포지토리에는 작성해주었습니다.) 그 이유가 UserLoanHistory도메인과 Book도메인이 연결되지 않았기 때문일까요?
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
PESSIMISTIC_WRITE 테스트 시 테스트 클래스 위 @Transactional
@Transactional @SpringBootTest class StockServiceTest { @Autowired private StockService stockService; @Autowired private PessimisticLockService pessimisticLockService; @Autowired private StockRepository stockRepository; @BeforeEach public void before() {안녕하세요 PESSIMISTIC_WRITE 예제처럼 테스트 시에 @Transactional을 붙이면 테스트가 첫 스레드풀 사이즈 만큼의 쿼리만 나가고 계속 대기 중입니다.혹시 원인을 알수 있을까요?
-
해결됨실전! Querydsl
BooleanBuilder를 활용한 괄호 묶기
안녕하세요! QueryDsl 수업을 잘 듣고, 실제 실무에서 활용을 하다가 조금 안되는 부분이 생겨 문의드리게 되었습니다.BooleanBuilder를 활용해서 동적 조건을 적용하고자 하였고 조건 중 and((AandB) or(CandD)) 라는 조건을 추가하기 위해 코드를 작성하였습니다.해당 부분은BooleanBuilder tempBuilder = new BooleanBuilder(); for (SiteStatus status: siteStatus) { if (status.equals(SiteStatus.SERVICE)) { tempBuilder.or(Expressions.predicate(Ops.WRAPPED, (serviceBillInfo.status.ne(BillStatus.DELETE).and(serviceBillInfo.billType.eq(BillType.TRIAL))))); } else if (status.equals(SiteStatus.PAID)) { tempBuilder.or(Expressions.predicate(Ops.WRAPPED, (serviceBillInfo.status.ne(BillStatus.DELETE).and(serviceBillInfo.billType.ne(BillType.TRIAL))))); } else { tempBuilder.or(Expressions.predicate(Ops.WRAPPED, (serviceBillInfo.status.eq(BillStatus.DELETE).or(serviceBillInfo.billType.isNull())))); } } builder.and(tempBuilder);위와 같은식으로 묶어서 처리하였고 디버깅을 통해서 builder라는 BooleanBuilder에 들어간 값을 String 형태로 보면 ((serviceBillInfo.status != DELETE && serviceBillInfo.billType = TRIAL) || (serviceBillInfo.status != DELETE && serviceBillInfo.billType != TRIAL) || (serviceBillInfo.status = DELETE || serviceBillInfo.billType is null))와 같이 제가 원하는 대로 builder 안에 값이 들어 있습니다.그런데 그 이후에 queryFactory에서 조건문 내부로 들어가면다음과 같이 쿼리문을 실행하게 됩니다. 해당 부분에 대해서 혹시 해결 방법이 있을까요???
-
해결됨실전! Querydsl
로그에 native Query가 출력되게 하려면 어떻게 해야하나요?
요약QuerydslRepositorySupport 적용p6spy 적용쿼리 로그는 출력이 되고 있지만 native query로 출력되지 않음. 로그 예시-- 현재 출력되는 로그 포맷 select daOrder.id, daOrder.createDate from DaOrder daOrder -- 원하는 로그 포맷 select d.id, d.create_date from da_order d 로컬에서 네이티브 쿼리가 바로 로그에 보이도록 설정하고 싶은데테이블명이 아닌 클래스명으로 쿼리가 출력이 되고 있는데요 혹시 어떤 설정을 바꿔야하는지 알 수 있을까요??
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
section3 와 section4 32강 질문입니다!
안녕하세요, 강사님. 항상 좋은 강의 너무 감사드립니다. section3과 section4 32강을 들으면서 질문이 생겨서 글 남기게 되었습니다.인스턴스화를 new를 사용해서 객체로 만들어준다고 이해하면 될까요? 예를 들어 User.class를 Board.class에서 사용할 때 User user = new User()로 만드는 것이 인스턴스화인지 궁금합니다.스프링 컨테이너에 대해 맞게 이해한 것인지 궁금합니다. 제가 이해한 바로는 컨테이너는 스프링 빈들을 대신 인스턴스화하고, 빈들끼리의 관계를 자동으로 맺어주고(의존성 자동으로 설정), 생성자를 통해 스프링 빈들끼리 서로 사용이 가능하게 한다는 것입니다. 이해한 개념이 맞는지 궁금합니다.returnBook관련 질문입니다. loanBook의 코드를 최대한 재활용해서 작성해보았는데요,@Transactional public void returnBook(BookReturnRequest request) { Book book = bookRepository.findByName(request.getBookName()); if(book == null) { throw new IllegalArgumentException("대출할 책이 존재하지 않습니다."); } // 유저 찾고 User user = userRepository.findByName(request.getUserName()); if(user == null) { throw new IllegalArgumentException("사용자가 존재하지 않습니다."); } // 이미 대출 중인 책인지 확인하고 if(userLoanHistoryRepository.existsByBookNameAndIsReturn(book.getName(), true)) { throw new IllegalArgumentException("이미 반납된 책입니다."); } // 책 찾고, 반납 UserLoanHistory history = userLoanHistoryRepository.findByBookName(book.getName()); history.returnBook(); }테스트 결과, 딱히 이상이 없어보입니다. existsByBookNameAndIsReturn(book.getName(), true)를 사용해도 괜찮을까요?감사합니다!
-
미해결실전! 스프링 데이터 JPA
엔티티 매니저에 대해!!!!
[벌크성 수정 쿼리] 강의 11:20쯤에"같은 트랜잭션이면 같은 엔티티 매니저를 불러온다"라고 강사님이 언급을 하셨습니다.질문 : 엔티티 매니저는 싱글톤 객체처럼 딱 1개만 가지고 재활용하면서 사용하는 것이 아니라, 트랜잭션이 실행될 때[마다] 새로운 엔티티 매니저가 생성되는 건가요??
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
Service와 Dto
강의를 보던 중에 궁금한 점이 있어서 질문 남겨요!결론부터 말씀드리자면 Service 레이어에서 dto를 사용해도 되는지, dto는 어떤 계층까지 사용해도 되는지에 대해 궁금합니다!저는 보통 사용할 때 UI <-> Controller 사이에서 데이터를 교환하기 위해 dto를 사용하고, Service 에서는 비즈니스 로직 수행 후 엔티티를 반환하는? 그런 식으로 진행해왔는데 강의에서 보면 Sevice에서도 dto를 바로 반환해서 사용하더라구요..dto라는게 data transfer object라는 의미를 가지고 있으니 굳이 UI와 Controller 관계가 아니여도 계층과 계층간의 데이터를 이동할 때 dto를 만들어서 사용해도 되는 건가요?? 감사합니다!!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
18강 GET API return
delete, post, put api에서는 함수 불러오기만 했는데get api에서는 왜 return을 써주나요??@GetMapping("/user")public List<UserResponse> getUsers() { return userService.getUsers(); }public List<UserResponse> getUsers() {return userRepository.getUsers();}
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
extenal libraies 목록이 안뜹니다.
안녕하세요 이번 강의로 인텔리제이를 공부하고있는 학생입니다.초반 부분 강사님께서 extenal libraies 목록을 펼치셔서 보여주셨는데 , 제 프로젝트 창에서 extenal libraies의 목록을 보여주는 화살표가 아예 뜨질 않습니다.
-
해결됨실전! Querydsl
Querydsl random select 쿼리
https://www.inflearn.com/questions/284950/querydsl-random-select%EA%B4%80%EB%A0%A82년정도 전에 Querydsl에서 ramdom select는 지원하지 않는다고 하셨는데 지금은 찾아보니 Expressions.numberTemplate()을 통해 SQL Function을 사용할 수 있다고 하는데 권장하는 사용법인지, 올바른 random select 방법인지 궁금합니다.추가로 같은 결과를 반환하는 random select, distinct, limit, 프로젝션을 한번에 수행하는 2개의 방법인데 2개의 차이는 다음과 같고 어느것을 추천하시는지 궁금합니다.case1의 방법이 limit를 가져오기에 불필요한 count쿼리를 추가로 날리지 않지만 실행 시간이 더욱 큽니다.case1 - Querydsl 사용테스트 실행시간 : 78mscount 쿼리를 추가로 생성하지 않음public List<QuizWordDto> findMyWordRandomForQuiz() { return queryFactory .select(Projections.constructor(QuizWordDto.class, myWord.name, myWord.morpheme, myWord.mean)) .distinct() .from(myWord) .orderBy(Expressions.numberTemplate(Double.class, "RAND()").asc()) .limit(40) .fetch(); } case2 - 페이징을 이용하여 Limit 가져오기테스트 실행시간 : 22mscount 쿼리를 추가로 생성@Query(value = "SELECT DISTINCT new com.ll.kotudy.word.service.dto.QuizWordDto(mw.name, mw.morpheme, mw.mean) " + "FROM MyWord mw " + "ORDER BY FUNCTION('RAND')", nativeQuery = false) Page<QuizWordDto> findDistinctRandomQuizWords(Pageable pageable);테스트 코드@BeforeEach void init() { for (int i = 0; i < 50; i++) { myWordRepository.save(new MyWord("동물" + i, "명사", "사람을 제외한 길짐승, 날짐승, 물짐승 따위를 통틀어 이르는 말." + i)); } } @Test void findMyWordForQuiz() { long startTime = System.currentTimeMillis(); PageRequest pageRequest = PageRequest.of(0, 40); Page<QuizWordDto> distinctRandomQuizWords = myWordRepository.findDistinctRandomQuizWords(pageRequest); long endTime = System.currentTimeMillis(); System.out.println(String.format("코드 실행 시간: %20dms", endTime - startTime)); } @Test void findMyWordForQuiz_querydsl() { long startTime = System.currentTimeMillis(); List<QuizWordDto> myWordRandomForQuiz = myWordRepository.findMyWordRandomForQuiz(); long endTime = System.currentTimeMillis(); System.out.println(String.format("코드 실행 시간: %20dms", endTime - startTime)); }
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jpa save 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]보통 jpa에서 제공하는 save는 Customer를 저장하고 싶은 경우(모든 컬럼에 값이 설정돼있지 않음)Customer customer = new Customer();customer.setCustomerName("aa");customerRepository.save(customer);setter로 설정하기엔 컬럼이 너무 많은데이게 맞는건지 아니면 컨트롤러에서 파라미터를 OrderVO로 받아서 Entity로 변환한 다음 저장하는게 맞는지 잘 모르겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다대일 매핑 테일에 대해서.. spring jpa 연관관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이런식으로 node 와 edge가 다대일 관계로마인드맵과 연관 관계를 맺으면 관리가 되나여.?node가 리스트 형식으로 저장되서 마인드맵의 id를 fk로 가져와서 이 마인드맵 번호로 관리할려고 하는데? 보통은 마인드맵쪽에서 다대일 관계로 되야하는데 그렇게 하면 이상해서..
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
for-each 중 break, for loop 사용 간 차이
안녕하세요. 강의 잘 듣고 있습니다.쉽게 잘 풀어 설명해주셔서 재미있게 듣고 있습니다!Array Loop 파트 중 궁금증이 생겨 질문 드립니다.for loop를 이용해 배열 순회:순회 범위를 조절하는 경우 유리for-each를 이용해 배열 순회:배열의 처음부터 끝까지 순회하는 경우 유리정도로 우선 이해했는데,만약 for-each를 사용하고 내부에서 조건문을 이용해 break 처리해 반복을 멈출 수도 있다는 생각이 듭니다.두 가지 방법에 유의미한 차이가 있나요?(e.g. 배열이 큰 경우 속도 차이가 있어 성능 문제로 이어질 수 있나요?)두 방법 중 무엇을 사용하든 차이가 없다면 기기 성능이 점점 좋아지기 때문에 무의미해진 건가요? 아니면 단순히 가독성의 문제인가요?위 두 질문 이외에 개발 공부를 하면서 든 궁금한 점이 있어 추가로 질문을 드리고 싶습니다.어떤 문제를 해결하는데 가능한 방법이 여러가지가 있다면 성능 측면에서 더 좋은 해결 방법을 선택하고 싶습니다.어떤 방법이 더 성능이 좋은지(빠르고 부하가 덜한지)를 알려면 어떻게 해야 하나요?
-
미해결자바 코딩테스트 - it 대기업 유제
문제 2번째 test case 질문
안녕하세요 선생님. 문제 조건상 "서로가 이득이 생기지 않으면 교환하지 않는 학생도 있습니다" 이 문장을 "서로가 이득이 생기지 않으면 두 학생 은 교환하지 않는다" 로 해석하는게 맞을까요?왜냐하면 교환이라는건 양쪽다 주고 받는게 있어야 하니깐 , 둘다 주고 받거나 / 둘다 주고받지 않거나 로 이해해서 위와 같이 생각하였습니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
메이븐 프로젝트
현재 Hello JPA - 프로젝트 생성 부분을 듣고 있는 수강생입니다.그 뒤에 있는 jpa 로드맵 모든 강의에서도 계속 메이븐 프로젝트로 프로젝트 진행을 하시는건가요?메이븐이랑 gradle 프로젝트는 많이 다를까요?