묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
구현 클래스마다 테이블 전략과 @MappedSuperCalss 차이점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]구현 클래스마다 테이블 전략과 @MappedSuperCalss가 내부적으로 어떠한 차이점이 있는 지 궁금합니다. 둘이 비슷한 것 같은데 전자는 사용하면 안 되고, 후자는 사용해도 되는 이유가 궁금합니다! (전자의 경우 강의에 충분히 나와있지만 후자는 사용하라고 하셨으니 그게 헷갈려서 질문 드립니다)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join 관련 질문드립니다.
to one 관계는 여러개를 사용해도 상관없고 to many 관계는 한개만 사용해야 된다고 하셨는데 질문이 생겨서 글을 써봅니당 테이블 A가 있다고 할때, A테이블이 B,C,D 테이블과는 to one 관계이고 E 테이블과는 to many 관계인 경우에 A 테이블에서 B,C,D,E 테이블을 전부 fetch join해도 문제가 없는건가요? ( B,C,D,E 테이블은 A에만 연관관계가 있고 B,C,D,E 끼리의 관계는 존재하지 않습니다.) 여러개의 테이블을 join하는 경우 to many관계가 한개 , 나머지 테이블은 to one관계이면 모두 fetch join해도 되는건지 알고싶습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
도애체 어디에서 오류가 난건지 모르겠습니다.
다음과 같이 코드를 했는데 24강까지 애플리케이션에서 잘 삭제되고, 잘 저장되었는데 25강이후 코드는 실행되는데 '나이'가 입력을 해도 00세로 나오고, 목록에서 삭제하려고하면 '서버내부 오류입니다'라고 뜹니다.아래 질문에서 쉬운거는 편집된게 있다고 하는데배우는단계에 있는 사람으로써는 그렇게 편집되면 많이 당황스럽네요...ㅜㅜㅜㅜㅜ어디서 틀렸나요?ㅜㅜUserResponsepackage com.group.libraryapp.dto.user.response; import com.group.libraryapp.domain.user.User; public class UserResponse { private long id; private String name; private Integer age; public UserResponse(long id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public UserResponse(User user) { this.id = user.getId(); this.name = user.getName(); } public UserResponse(long id, User user) { this.id = id; this.name = user.getName(); this.age = user.getAge(); } public long getId() { return id; } public String getName() { return name; } public Integer getAge() { return age; } }Userpackage com.group.libraryapp.domain.user; import javax.persistence.*; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id = null; @Column(nullable = false, length = 20, name = "name") private String name; private Integer age; protected User() { } public User(String name, Integer age) { if (name == null || name.isBlank()) { throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.",name)); } this.name = name; this.age = age; } public String getName() { return name; } public Integer getAge() { return age; } //User class public Long getId() { return id; } public void updateName(String name) { this.name = name; } }UserRepositorypackage com.group.libraryapp.domain.user; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { User findByName(String name); } UserControllerpackage com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import com.group.libraryapp.service.user.UserServiceV2; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController public class UserController { private final UserServiceV2 userServiceV2; public UserController(UserServiceV2 UserServiceV2) { this.userServiceV2 = UserServiceV2; } @PostMapping("/user") public void saveUser(@RequestBody UserCreateRequest request) { userServiceV2.saveUser(request); } @GetMapping("/user") public List<UserResponse> getUsers() { return userServiceV2.getUsers(); } @PutMapping("/user") public void updateUser (@RequestBody UserUpdateRequest request) { userServiceV2.updateUser(request); } @DeleteMapping("/user") public void deldteUser (@RequestParam String name) { userServiceV2.deleteUser(name); } } UserServiceV2package com.group.libraryapp.service.user; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.domain.user.UserRepository; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Service public class UserServiceV2 { private final UserRepository userRepository; public UserServiceV2(UserRepository userRepository) { this.userRepository = userRepository; } public void saveUser(UserCreateRequest request) { User u = userRepository.save(new User(request.getName(), request.getAge())); //System.out.println(u.getId()); } public List<UserResponse> getUsers() { return userRepository.findAll().stream() .map(UserResponse::new) .collect(Collectors.toList()); } public void updateUser(UserUpdateRequest request) { User user = userRepository.findById(request.getId()) .orElseThrow(IllegalArgumentException::new); user.updateName((request.getName())); userRepository.save(user); } public void deleteUser(String name) { User user = userRepository.findByName(name); if (user == null) { throw new IllegalArgumentException(); } userRepository.delete(user); } } UserCreateRequestpackage com.group.libraryapp.dto.user.request; public class UserCreateRequest { private String name; private Integer age; public String getName() { return name; } public Integer getAge() { return age; } }
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
벌크 연산에 대해 질문 있습니다.
더티 체킹으로 발생한 update 문과 벌크 연산으로 발생한 update의 흐름이 궁금합니다. 기존에 setName() 이런식으로 엔티티의 속성을 수정하면 커밋시 플러시가 발생해서 최종적으로 더티체킹이 발생해 JPA가 알아서 update 쿼리를 날리고 벌크 연산 같은 경우에는 더티 체킹과 아무 상관없이 바로 update 쿼리를 날린다. 라고 이해를 했는데 맞게 이해한건지 궁금합니다.벌크 연산 같은 경우에는 바로 update 쿼리를 D에 보내는 방식이므로 영속성 컨텍스트에 있는 값에는 아무 영향을 끼치지 않나요?복수의 데이터를 변경하거나 삭제할때 벌크 연산을 사용하면 좋아보이는데요 복수의 복수 데이터는 어떻게 처리하는지 궁금합니다. 예를들어 게시글에 댓글이 여러개 달리는 구조고 게시글 하나 삭제 시 게시글에 달린 댓글들도 삭제되는 상황이라고 가정 하겠습니다. 이때 하나의 게시글을 삭제하면 벌크 연산을 사용하여 쉽게 댓글을 삭제하면 되지만 여러개의 게시글을 삭제할때는 어떻게 처리하면 좋을지 궁금합니다.
-
미해결실전! Querydsl
QuerydslApplicationTests 오류가 자꾸 납니다...
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 이 부분 테스트할 때 자꾸 오류가 나네요...이 사진은 설정 파일인데 이걸 properties로 하던지, yml로 하던지 똑같이 오류가 납니다...근데 이상하게 아래 사진처럼 주석을 치면 오류가 안나더라고요..?주석치면 되는 문제가 안생기는 사실은 처음에 세팅할 땐 테스트에 문제가 없었는데, yml생성하고 실행시키니까 오류가 나서 알았습니다. 아래는 오류 문구입니다.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=study.querydsl.entity.Hello]Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=study.querydsl.entity.Hello]Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=study.querydsl.entity.Hello]Caused by: org.hibernate.HibernateException: Could not fetch the SequenceInformation from the databaseCaused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "start_value" not found [42122-224]
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Result.hasErrors()로 처리를 해도
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Result.hasErrors()로 처리를 해도 등록페이지에 아무것도 안적고 제출누르면 회원 이름은 필수입니다가 떠야 하는데 안뜹니다 왜 그런걸까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의 9분 20초쯤에 대해 질문 있습니다.
일대다는 페치 조인 사용시 데이터 뻥튀기가 발생한다. 그래서 여기에 페이징을 사용하면 안된다. 라고 얘기해주시고 9분 20초쯤에 이미지를 예시로 설명해주시면서 여기서 페이징을 사용하여 데이터를 1만 가져와 해서 첫번째 row만 조회하게 되는 문제가 발생해서 사용하면 안된다 라고 설명해주셨는데요페이징 자체가 DB에서 데이터를 가져올때 필터링을 하기위해 사용하는거 아닌가요? 그래서 이미지에서 당연히 첫번째 row만 조회 되겠지 생각하고 페이징을 사용한다고 생각해서 잘 이해가 되질 않습니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL을 어떻게 작성하면 좋을지에 대해 질문 있습니다.
애플리케이션 코드단에서 바로 JPQL 작성하기SQL을 먼저 작성하고 데이터베이스에서 테스트 후 JPQL로 변환하기둘중에 어떤 방법이 좋을까요?? 혹은 다른 더 좋은 방법이 있으면 알려주시면 감사하겠습니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
Redux에서 <provider >사용시 오류 -Cannot read properties of undefined (reading ‘getState’)
안녕하세요 열심히 강의 듣고 있습니다. 거의 중 후반까지 왔어요. jwt 강의 까지 듣고 많은걸 알게 되어서 많이 기쁩니다. 자신감이 많이 생겼네요.(참고로 java는 잘 못해서 kotlin으로 다 컨버팅 했네요 .... )https://github.com/justkjy/apiserver 컨버팅 작업 하니깐 2번 듣게 되고 정확하게 이해가 되네요 ...== 본론 === 리덕스 툴킷 설정 강의에서 알려주신 코드를 따라 쳤는데 에러가 났어요..const root = ReactDOM.createRoot(document.getElementById('root')); // root.render( // <Provider strote={store}> // <App /> // </Provider> // ); root.render( <App /> );Cannot read properties of undefined (reading ‘getState’) 그래서 provider를 지워라고 하네요...이게 맞나요??인프런 이슈 정보에도 지워라고 하긴 하는데 ===========https://www.inflearn.com/community/questions/36034/%EC%A0%9C%EB%A1%9C%EC%B4%88%EB%8B%98-%EC%BD%94%EB%93%9C%EB%A5%BC-%EB%94%B0%EB%9D%BC%EC%84%9C%EB%8F%84-%EA%B7%B8%EB%8C%80%EB%A1%9C-%EB%B3%B5%EC%82%AC%ED%96%88%EB%8A%94%EB%8D%B0-%EC%9D%B4-%EB%AC%B4%EC%8A%A8%EC%97%90%EB%9F%AC%EC%9D%B8%EA%B0%80%EC%9A%94-%EB%AA%87%EC%9D%BC%EC%A7%B8-%ED%95%B4%EA%B2%B0-%EB%AA%BB%ED%95%98%EA%B3%A0-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4================================= 저렇게 하면 강의 따라 가는데 문제가 없을까요?리덕스 툴킷 설정
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
프로젝트 실행이 안됨
영상이 만들어진지 시간이 지나서 그런지 프로젝트 자체가 설정이 오래되 자바, gradle 버전 업그레이드하고 존재하지 않는 패키지 포함시켜주니 이런 에러가 뜨면서 실행이 되질 않습니다. 뭐가 문제일 까요.. window11에 java 버전 17입니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
프록시 객체 트랜잭션 내부 호출
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Transactional이 작성되지 않은 메서드에서 @Transactional이 작성된 자신의 메서드를 호출하면 트랜잭션이 실행되지 않는다는 것은 이해하였습니다. 그러면 @Transactional이 작성된 메서드에서 @Transactional이 작성된 자신의 메서드를 호출하면 현재 자신이 프록시 객체이므로 트랜잭션이 실행되는걸까요? 아니면 현재 프록시 객체가 아니라 타겟 객체이므로 똑같이 트랜잭션이 실행되지않는걸까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
질문드립니다.
Error performing load command org.hibernate.InstantiationException: No default constructor for entity 'hellojpa.Member'이렇게 에러가 나왔는데 어딜 봐야할까요????? 이전까지 잘 됐는데, 변경부분터 저렇게 에러가 뜨네요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
main 함수 실행 에러
첫번째 스크린샷 build ~ using을 인텔리제이로 썼을 땐 에러가 안 나는데 이번 강의에서 gradle(default)로 설정한 후 main함수 실행 시 에러가 뜨며 실행이 되지 않습니다. 다른 질문들 참고해봤는데 다른 건 없고 계속 똑같은 오류가 뜨더라구요.. 해결 방법이 있을까요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
문법질문입니다.
코드를 제가 잘 이해하고 따라가는지 궁금합니다.질문1리포지토리에서 활성화가 되어있는 프로젝트만 가져와서 projects에 리스트 형태로 넣어서 다시 ProjectDTO 형태로 넣어서 컨트롤러에서 처리하게끔 해주는건가요? 질문2여기서 제가 이해한게 맞다면 return 할떄 projects.map을 왜 이용하는건가요? map은 키와 값으로 이루어 져있는 배열로 알고있는데 ProjectDTO가 키와 값으로 이루어져서 그런건가요?질문3ProjectDTO(it) 여기서 말하는 it은 무엇을 의미하는지 알수있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@NotEmpty 어노테이션
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@NotEmpty어노테이션이 임포트가 안됩니다 혹시 버전차이때문에 그런건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
slf4j 보안에 대해 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]혹시 slf4j가 보안에 취약하다고 Logback를 사용하라는 블로그글을 본 적이 있는데 혹시 사실인가요??보안이 뚫렸다고 표현을 해서 궁금합니다
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL에 대해 질문 있습니다.
List<Team> result1 = em.createQuery("select t from Member m join m.team t", Team.class) .getResultList(); List<Team> result2 = em.createQuery("select t from Member m join Team t on m.id = t.id", Team.class) .getResultList(); 강의에서는 result1과 같이 jpql을 작성했는데 result2처럼 jpql을 작성해도 되는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
25강 findAll듣던중에
다음 첨부파일처럼 공유자께(첨부1)서는 public UserResponse(long id, User user) { }가 있습니다.그런데 저는 지금까지 쓴 코드에서 첨부파일(첨부2)처럼 저 코드부분이 없습니다.몇강에서 놓친건가요
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
25강 질문있습니다.
저장기능 변경에서 save를 하게 되면 저장된 User객체가 반환되는데 이때 id를 사용할 수도 있다.라고 했는데반환되는것이 User객체의 ID인건가요?그리고 꼭 반환 안하고 처음에 작성했던 public void saveUser(UserCreateRequest request) { userRepository.save(new User(request.getName(), request.getAge())); }이렇게 써도 되는건가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
25강 질문있습니다
JpaRepository를 UserRepository가 상속받게 해줄때, 만든 테이블의 매핑 객체인 User 와 유저 테이블의 id인 Long 타입을 각각 적어주어야 한다고 하셨는데 user객체는 이해가 가는데 갑자기 id인 Long타입은 왜 적나요?