묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 비밀번호 초기화 후 재설정
안녕하세요! 지난번 질문에 답 주셔서 감사합니다.다름이 아니라 제 pc에 mysql이 설치되어 있어서 강의대로 mysql로 사용하려고 합니다.그런데 비밀번호가 생각 나지 않아서, 인터넷에 나와있는 방법으로 하려고 했는데, 비밀번호 초기화 까지는 했는데 그다음으로 넘어가질 않아서요..ㅠㅠ암호를 설정하려면 cmd창에 mysql -r root -p 를 입력한 후 password가 나왔을 때 엔터만 쳐도 mysql로 접속이 된다고 하면서, 거기서 비밀번호를 설정하면 된다고 합니다.하지만 저는여기 나온 에러만 계속 나와서...비밀번호 설정을 못하고 있습니다.제발 방법 좀 알려주세요ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록
<BookForm>@Getter @Setter public class BookForm { private Long id; private String name; private int price; private int stockQuantity; private String author; private String isbn; } <Controller>@PostMapping("/items/new") public String create(BookForm form){ Book book = new Book(); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/"; } <Service>@Service @RequiredArgsConstructor @Transactional(readOnly = true) public class ItemService { private final ItemRepository itemRepository; public void saveItem(Item item){ itemRepository.save(item); } public Item findOne(Long itemId){ return itemRepository.findOne(itemId); } public List<Item> findAll(){ return itemRepository.findAll(); } } <Repository>@Repository @RequiredArgsConstructor @Slf4j public class ItemRepository { private final EntityManager em; public void save(Item item){ if(item.getId() == null){ log.info("item={}", item); em.persist(item); //신규등록 }else{ em.merge(item); } } public Item findOne(Long id){ return em.find(Item.class, id); } public List<Item> findAll(){ return em.createQuery("select i from Item i", Item.class) .getResultList(); } } <Log>2023-04-21 15:08:16.380 INFO 7536 --- [nio-8080-exec-2] j.jpashop2.repository.ItemRepository : item=Book(author=qwe, isbn=1234)<Test>로그에 찍히는거 보면 값이 다 전달이 되고 테스트 코드에서도 성공으로 떠서 저장이 되야 될거 같은데 h2 db에 가면 값이 저장이 안되어 있네요아예 디비랑 연동이 안되나 싶었는데 멤버는 정상적으로 회원가입이 되는데 아이템만 저장이 안되네요 뭐가 문제일까요... ddl-auto 는 create로 되어있구요 h2 db 버전은 1.4.2 입니다
-
해결됨토비의 스프링 부트 - 이해와 원리
@ComponentScan과 @Import 질문있습니다.
@ComponentScan을 하게되면해당 패키지 이하로 컴포넌트가 어노테이션으로 있으면빈으로 등록해주고@Import를 하면 @Configuration class를 넣으면해당 구정 정보 클래스가 빈 등록이 되는데 제가 생각한 @ComponentScan과 @Import차이는컴포넌트 스캔은 패키지나 클래스를 기점으로 쭉 클래스를 찾아 돌아다녀야하지만자동 구성빈에서 사용되는 많은 빈들을 다 컴포넌트 스캔으로 사용하는거보다필요한 구성 정보 클래스만 스프링 부트가 @Conditional로 판단해서 빈으로 등록할수 있다보니컴포넌트 스캔보다 더 빠르고 구성 정보끼리 관계를 알수 있다고 생각이 되더라구요 제가 이해한게 맞는지 아니면 잘못 이해하고 있는지 추가로 설명해주실수 있으신가요..?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 빌드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인텔리제이 터미널에서 gradlew.bat build를 치니 오류가 뜹니다. 해결방법 알 수 있을까요?
-
미해결토비의 스프링 부트 - 이해와 원리
안녕하세요.
안녕하세요. 토비님덕분에 좋은 강의를 잘 보고 있습니다!강의와는 다른 내용인데.토비님은 REST API를 개발하실때다양한 쿼리스트링 요청이 들어올때 값의 유무 체크를 어떻게 하시는지 궁금합니다.if문으로 null을 각각 확인하고 있긴 한데..코드도 길어지고 가독성도 안좋아 질문드립니다 ㅠㅠpublic class User { private String name; private String phone; private String email; } @GetMapping("/v1") public void list(@ModelAttribute User user) { } :8080/v1?name=apple :8080/v1?name=apple&phone=01012345678 :8080/v1?phone=01012345678
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
환경 세팅 질문입니다.
안녕하세요. 강의에서 보여주셨던 것과는 start.spring.io 의 화면이 달라서, 강의를 따라가기 위해서는 어떻게 선택해야 하는지 여쭙고자 합니다.Project에서는 Gradle-Groovy를 사용하면 되는건가요?Spring Boot는 3.0.5로 해야할까요 2.7.10으로 해야 할까요java버전은 17이 좋을까요 11이 좋을까요? 버전에 따라 dependencies가 먹히거나 안먹히거나 하는거 같습니다.답변에 미리 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HelloController 밒 hello.html 실행 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예{[질문 내용]여기에 질문 내용을 남겨주세요. 제 hello.html에는 강사님과 다르게 ${data}" 부분에 주황색 글씨로 표기가 안되고 HelloControlle에서 string hello 부분에도 주황색 글씨로 표기가 안되는데 어떤 오류가 있을까요..?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리 최적화 관련 (직접 쿼리날리기, 엔티티를 통한 접근)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.특정 엔티티에 접근을 하려고 할 때 1)직접 쿼리를 통해 접근 하는 방법, 2) 엔티티와 자바 메소드를 통해 접근하는 방법 중 어떤 것을 선택해야할까요?예를 들어 User엔티티와 Follow엔티티가 1대N으로 설정되어있다고 가정한다면. user.getFollows()를 한다면 Select 쿼리가 한 번 더 나가게됩니다. 이것도 user를 repository에서 가져올때 follows를 join fetch 해온다면 괜찮지만insert또는 delete할 때가 고민입니다Insert일 때1) cascade타입을 persist또는 all로 설정해둔다면user.getFollows.add(follow) 쿼리로 할 수 있습니다하지만 이렇다면 Select문, Insert문 쿼리가 두번이 추가가 됩니다2)하지만 followRepository.save(follow)를 한다면 insert문 한 번의 쿼리만 나가게 됩니다.delete일 떄1)user.getFollows.delete(follow)또한 Select문, delete문 두번의 쿼리가 나가지만2)followRepository.delete(follow)는 한 번의 쿼리가 나갑니다. 하지만 이마저도 이전에 follow를 검색하는 과정에서 쿼리가 더 나갈 수 있습니다ex) User user = userRepository.findByUserId(userId);Follow follow = user.get~~; // 삭제할 follow를 구별해내는 메소드user.getFollows.delete(follow)-> 쿼리가 총 4번이 나갈 수 있습니다하지만 이걸 followRepository에서@Query("delete ~~");void deleteByUserId(@Param("userId"))이 메소드를 한 번 실행시키는 걸로 축소한다면 단 한 번의 쿼리로 축소할 수 있습니다.이렇다면 웬만한 데이터에 접근할 때 직접 쿼리를 날리는게 좋지 않나요? 왜 엔티티상으로 데이터에 접근하는지 궁금합니다.그리고 만약에 특유의 이유가 있다고 하여도 (객체 지향의 이유 등등) 쿼리를 4번에서 1번으로 줄일 수 있는 것을 포기할 정도의 이유인지도 궁금합니다!
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
글쓰기화면에서리스트로갈떄 파라미터값을 못가지고오는 오류가 발생하네요 이유가 뭘까요?
서비스부분 컨트롤부분 매퍼부분 xml부분 오류코드부분
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
굳이 DTO를 join하지 않고 Member 객체를 만들어서 저장 후 넣는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목처럼 form이 DTO의 역할을 하는 것인데 굳이 도메인인 멤버 객체를 생성해서 setName하고 join에 넣는 이유가 궁금합니다. 사실 form에서 넘어온 데이터를 바로 join에 넣으면 새로운 객체를 만들지 않아도 되서 큰 자원은 아니지만 낭비하지 않을 수 있지 않나요?..! 저렇게 사용하는 이유에 대해서 고민해보았는데 DTO의 역할은 단순하게 데이터의 전달 역할만 하는 것이기 때문에 그 역할을 지키기 위해 영상에 나온 것과 같이 사용하는 것일까요?!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이 mysql 콘솔창 질문
11강에서 부터 진행하시는 것을 보면 인테릴제이에서 mysql 콘솔창을 사용하시는 것으로 보입니다. 구글링 해보니까 커뮤니티 에디션에서는 사용이 불가한 것 같아서 위의 사진과 같이 비슷한 plug-in 사용해서 현재 작업중인데 강사님처럼 sql문 실행했을 때 결과값을 볼 수가 없습니다 ㅠㅠㅠ 해결 할 수 있는 방법이 없을까요??
-
미해결실전! 스프링 데이터 JPA
MemberRepositoryImpl 네이밍 관련 질문
강의에서 사용자 정의 리포지토리 인터페이스로 만들고, 이걸 구현한 클래스 이름은 리포지토리+Impl 이여야 된다고 하셨는데(강의에서는 MemberRepositoryImpl), 처음에 모르고 MemberRepositoryCustomImpl 로 구현 클래스 이름을 정했는데 테스트 코드도 잘 돌아가고 Query도 동일하게 나왔습니다 ...MemberRepositoryImpl 가 아니면 오류나야 되는 게 아닌가요 ? MemberRepositoryCustomImpl 로 했는데도 잘 작동한 이유가 궁금합니다 ... 네이밍이 틀려도 상관 없는건가요 ..?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
db연동부분에서 계속 오류가 발생하네요
매퍼xml컨트롤러오류코드 2.7.7로 변경하였습니다 오류가 발생한 이유가 뭘까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
Authentication should not be null 오류 질문
안녕하세요. 백기선님. 좋은 강의 감사합니다. 강의를 따라가다 Authentication 오류 해결에 어려움을 겪고 있어 질문드립니다. test소스 authenticated()에서는 Authentication should not be null 에러가 발생하고 뷰단에서도 isAuthenticated() 체크되지 않습니다. 디버깅을 해보면 UsernamePasswordAuthenticationToken 생성 이후 Authentication 객체가 만들어진 것은 확인을 했는데, 어느 시점에서 객체를 못가져오고 null이 찍힙니다.스프링시큐리티에 대한 지식이 없어 그런지 난감합니다. 도움주시면 감사하겠습니다.Spring-Security6 사용중입니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
hateoas entityModel이 import가 안됩니다
동영상을 보고 따라서 pom.xml에 hateoas 추가했지만 usercontroller에 entityModel이 import되지 않습니다. spring boot 버전은 2.7.8인데 pom.xml에 다른걸 더 작성해야하나요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
패키지 이동시 import 깨짐
강좌대로 패키지에 모두 이동시켯더니 기존 refactor로import경로가 바뀌었지만 모두 비활성화 상태가 되어서오류가 나버립니다. 무슨이유일까요?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
인텔리j무료버젼에서는 자동완성기능이 안되는게 맞죠??
ㅇㅇ
-
미해결스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
BCryptPasswrdEncoder를 @Spy로 사용한 이유
안녕하세요.강의 잘 들으면서 공부중입니다! 회원가입 Service 테스트 작성하는것을 보다@Spy와 @Mock의 정확한 차이가 궁금하여 질문드립니다. (언제 사용해야 할지)BCryptPasswordEncoder는 @Spy를 사용한 이유가 있을까요?@Mock을사용하면 안되는건가요? 반대로 UserRepository는 @Spy를사용하면 안되는 걸까요?? 항상 좋은 강의 잘 듣고있습니다.감사합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
생성자 사용하여 memberService와 memberRepository를 new 할때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 고생이 많으십니다. 질문이 있어 글 남깁니다.스프링 입문 강의의 회원 서비스 테스트 강의 16:30 지점에서, memberService와 memberRepository 객체를 생성하기 위해 new를 할 때,MemoryMemberRepository memberRepository = new MemoryMemberRepository(); MemberService memberService = new MemberService(memberRepository);위와 같이 해 주지 않고,MemoryMemberRepository memberRepository; MemberService memberService; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); }이렇게 해 주는 이유가, 각각의 테스트가 새로운 각각의 객체를 가지고 독립적으로 실행되어야 하기 때문인지 궁금합니다. 만약 그렇다면, AfterEach() 메서드를 사용하여 memberRepository를 계속 clear 해주고 있기 때문에 beforeEach()로 각 테스트마다 새로운 객체를 사용해 줄 필요가 없을텐데, 왜 beforeEach()를 사용하여 새로운 객체를 각 테스트 메서드 실행때마다 만들어 주도록 하는지도 궁금합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
WAR 빌드에 관한 질문입니다
War파일의 압축을 풀 때 window cmd에서 jar -xvf server-0.0.1-SNAPSHOT.war명령어를 칠 때 'jar'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라는 문구가 자꾸 나옵니다. java랑 javac 설치 되어있는데도 오류가 나고 구글링을 해봐도 답을 찾을 수가 없습니다 ㅠㅠ