묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]검색을 해봐도 정확한 내용을 알기 어려워서 질문 남깁니다!JPA 다른 편 강의에서 하이버네이트6 이상부터는 from절의 서브쿼리를 지원한다고 본 것 같은데, 그렇다면 현재 JPQL과 Querydsl에서 from절 서브쿼리를 지원하는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Repository에서 EntityManager 주입 방식 차이
[질문 내용]스프링 db 강의에서는@Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em;이 방식으로 했는데, 이 강의에서는@Repository public class MemberRepository { @PersistenceContext private EntityManager em;이렇게 사용하셔서 두 방식의 무슨 차이가 있는지 궁금합니다.
-
미해결Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
스프링부트 에러
스프링부트 작성 후 에러가 발생하고 있는데어노테이션에러가 발생하고 있습니다. C:\prac\src\main\java\restApi\prac\service\PostService.java:8: error: cannot find symbol public PostService(PostRepository postRepository) { ^ symbol: class PostRepository location: class PostService모든 어노테이션에서 발생하고 있는데 설정 문제 일까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id;강의에서는 위와 같이 타입을 String으로 하셔서 신기하다 하고 따라했는데 오류가 뜨더라고요 (애초에 테이블 자체가 안만들어짐, 쿼리는 날라감)그래서 그냥 원래 하던대로 Long으로 했는데 잘 되는 거보니, 강의가 옛날 버전이기도 하고해서 예전에는 h2에서 String 타입의 ID 형식도 허용해줬던건가요?[오류 일부 스크린샷]
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
"MemberFinderTest, MemberRegisterTest" record관련
record + 클래스 레벨 @Transactional에서 에러가 발생합니다.!질문은 record 예약어는 final 클래스라서 상속이나 프록시 생성이 불가능한거 같은데@Transactional 어노테이션은 Spring AOP기반이라 프록시 객체 생성이 안되서 에러가 발생하는거 같은데... 강의에서는 통과가 되더라구요 제가 어떤 부분이 놓쳤을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
롬복과 사용자 정의 setter 메서드
강의 23:03분에서 setMember(Member member)라는 setter 메서드를 작성하는데요.제가 기억하기로는 @Setter를 설정하면 자동으로 필드 이름을 딴 setXXX()인 setter가 만들어지는 것으로 알고 있습니다.그러니까 현재 Member 필드가 있으니까 롬복인 @Setter 에 의해 setMember(Member member)가 자동으로 생성되지 않을까 생각하는데요. 제가 생각한게 맞다면 이때 강의에서 만든 setMember(Member member)와 충돌? 이런 문제는 없나요? 시그니처까지 똑같은 것 아닌가요?아니면 이런경우 사용자가 직접 만든 것이 더 우선시 되는건가요?
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
인터페이스
안녕하세요! 이번 강의 수강 중 서비스 인터페이스에 대해 궁금하여 글을 남기게 되었습니다. 흔히 스프링 프로젝트에서 보통 Service 인터페이스와 ServiceImpl 구현체로 나누어 개발하며 제가 참여하게 된 프로젝트 또한 이러한 구조였습니다.이미 이전 개발자 분께서 Service 인터페이스와 ServiceImpl 구현체로 나눠놓은 상태였고, 제가 A 기능의 AServiceImpl 안에 특정 서비스 로직이 비대해짐에 따라 해당 코드가 명확하지 않다고 생각되어 메서드로 분리하게 되었습니다. A 엔티티의 상태, 계산 등의 로직으로 private 메서드를 두었습니다.여기서 동료와 의견이 갈렸습니다:동료 입장:1. ServiceImpl 안의 모든 메서드는 반드시 인터페이스에 있어야 한다.2. 인터페이스는 외부·내부 구분이 아니라, 구현체가 제공하는 기능을 보장하는 것이므로 전부 담아야 한다.3. 내부 메서드를 둘 거라면 굳이 인터페이스로 추상화할 필요가 없고 그냥 클래스로 쓰면 된다.제 입장:1. 인터페이스에는 “외부 계약(=공개 API)”만 있어야 한다.2. 구현체 내부에서만 쓰이는 로직은 private으로 감추는 게 맞고, 외부에서 호출할 필요가 전혀 없다.3. 인터페이스를 구현체 내부 헬퍼까지 다 포함하면, 오히려 계약이 불필요하게 비대해지고 역할이 모호해진다.핵심 쟁점저는 public 메서드는 모두 인터페이스에 있어야 한다는 데에는 동의합니다. 또한, 단순 public, private 만 있다면, 인터페이스의 역할이 모호하다는 것또한 이해하지만, 이전 코드와의 일관성과 운영 중인 시스템에 대한 변경이 필요할정도의 중대사항이라고 생각하지 않습니다.궁금한 점은 private/내부 헬퍼 메서드까지 인터페이스에 강제로 올리는 게 맞는지, 인터페이스를 사용하는 의의가 궁금합니다. 긴글 읽어주셔서 감사합니다.
-
미해결Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
자바 17
자바 17로 진행해도 되나요
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
궁금한게 있습니다.
ManyToOne 이 N : 1이라는관계를 표현한다는건 이해가 가는데 그게 어떻게 User 객체와 user_id bigint 컬럼과 매핑이 되는지 잘 모르겠습니다. 대출기록이 여러개고 User 가 1개 라는 것과 저것이 무슨 연관인지 이해가 안갑니다ㅜ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계 시 연관관계 주인을 설정하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]연관관계 를 사용할 경우 연관관계 주인을 설정해야 하는건 이해를 했습니다.@Entity public class Team { @Id @GeneratedValue private Long id; private String name; @OneToMany private List<Member1> members = new ArrayList<>(); }@Entity public class Member1 { @Id @GeneratedValue private Long id; private String username; @ManyToOne @JoinColumn(name = "team_id") private Team team; }위와 같은 엔티티 구조일 경우 Team 에서도 Member1 에 대한 정보를 알수 있으며 Member1 에서도 Team 에 대한 정보를 알수 있습니다. 이후 둘의 데이터를 삽입한다는 가정하에 다음과 같이 Member 를 먼저 생성후 Team 에 입력할수도 있고Member1 member1 = new Member1(); member1.setUsername("member1"); em.persist(member1); Team team1 = new Team(); team1.setName("teamA"); team1.getMembers().add(member1); em.persist(team1); 반대로 Team 을 먼저 생성한 뒤에 Member 에게 알려줄수도 있습니다.Team team = new Team(); team.setName("teamA"); em.persist(team); Member1 member = new Member1(); member.setUsername("member1"); member.setTeam(team); em.persist(member);문제는 여기서 부터 인데... 연관관계 주인을 사용하는 이유는 JPA 에 혼란(?) 을 주지 않기 위함이다 라고 외우고 있는 상태입니다. "mappedBy 를 사용하여 한쪽에서는 쓰기만 가능하도록 동작하도록 한다. " 근데 이게 연관관계 주인하고 무슨 상관인지 잘 모르겠습니다. 그냥 둘다 읽고 쓰고 업데이트 다 가능해도 객체 입장에서는 큰 문제가 없을거 같은데.. 굳이 연관관계 주인이라는 개념을 도입해서 사용하는 이유를 잘 모르겠습니다. 가령 DB 에서는 Team 테이블의 ID 값이 변경이 필요할 경우 그 와 함께 연관되어 있는 Member 테이블에 team_id 값을 변경해줄수도 있고 반대 상황에서도 변경이 가능한데.. 뭔 차이 인지 잘 모르겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
DTO 관련
안녕하세요 BookCreateRequest 객체에 name 을받는 생성자를 만들었더니 아무것도 안받는 생성자도 만들어야 정상 작동하더라구요 근데 아예 생성자를 안만드니까 바로 정상 작동하던데 무슨 차이가 있는건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의를 듣다가 생각나게 된 것이 앞서 배운 @MappedSuperClass가 생각이 났습니다. 이것도 각 엔티티에 공통된 속성을 정해줄 수 있었는데요. 어떤 차이점이 있는지 궁금합니다.
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
배포 시 테스트 코드가 돌아갈때 사용하게 될 RDB 셋팅에 관하여..
안녕하세요.강의 정말 잘 들었습니다.도움이 많이 되어서 수강평은 나중에 꼼꼼히 작성해볼 생각입니다~!====================== 바쁘시면 이 부분만 읽으셔도 됩니다. ============= 배포 시 jenkins server에서 실제 서버에 배포할때 테스트가 돌아갈텐데jenkins server에 compose를 통해 작동 하게 될mysql에 DB schema insert 작업을 해서동일하게 구조를 맞추고 테스트가 돌아가게 하는 게 좋은 생각일 까요?=========================================================== [세부 사항] 일단 테스트 코드가 local mysql에서 돌아가는 걸로 이해 했습니다. 배포 시 jenkins server에서 실제 서버에 배포할때 테스트가 돌아갈텐데jenkins server에 compose를 통해 작동 하게 될mysql에 DB schema insert 작업을 해서동일하게 구조를 맞추고 테스트가 돌아가게 하는 게 좋은 생각일 까요?현재 아직 jenkins 배포를 하고 있지는 않고 소스코드 개발중이라머리속으로만 생각하는 상태입니다. 토비님 의견은 어떠신가요.....?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
궁금한게 있습니다!
이렇게 3단분리를 할때 처음부터 코드를 작성할때 이렇게 3가지 역할을 분리해서 각각 구현해야지! 라고 다 미리 설정해두고 코드를 짜는건가요 아니면 controller 에 일단 다 구현해놓고 그다음 분리해서 구현하는건가요?? 전자면 미리 생각하게 많아 뭔가 복잡해보여서요 ㅜ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
데이터베이스가 초기화되는 것 같아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]2번 멤버(HelloB)를 추가하는 코드를 실행한 뒤에 h2에서 조회해보면 1번 멤버는 없고 2번만 나와요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
getReference()하면 영속성 컨텍스트에 속하게 되나요?
강의 36분 10초 경부터 관련해서 질문드립니다.해당 시점에서 refMember는 getReference()하였으므로 프록시입니다.그리고 바로 다음에 em.detach(refMember) 하여 영속성 컨텍스트에서 끄집어 낸다고 하시는데요.그렇다면 getReference()하여 생성되는 프록시도 영속성 컨텍스트에 속하게 된다는 말씀인건가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여
@Transactional public void returnBook(BookReturnRequest request) { User user = userRepository.findByName(request.getUserName()) .orElseThrow(IllegalArgumentException::new); user.returnBook(request.getBookName()); }위 코드의 BookService 에서 책을 반납할때 userLoanHistory 중 user명과 책 이름이 같은것을 가져와서 userLoanHistory 에서 리턴하는데 문제는 한 사람이 이미 같은 책을 빌렸고 반납한 기록이 있다면 중복으로 잡힙니다.public void returnBook(String bookName) { UserLoanHistory targetHistory = this.userLoanHistories.stream() .filter(history -> history.getBookName().equals(bookName)) .findFirst() .orElseThrow(IllegalArgumentException::new); targetHistory.doReturn(); }위의 User 엔티티에서 혹시 userLoanHistory 값이 여러개 나올때 혹시 .findFirst() 를 통해 그 중 가장 위즉, 여기선 가장 최근에 대출한 책의 기록인 userLoanHistory 를 가져와서 doReturn()을 진행하는 형태가 맞습니까?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
엔티티클래스에서 질문입니다
엔티티클래스 만들기 5분 20초경에 create table todo{ tno bigint ~~~~~ 이런식으로 떠야하는데}저는 jdbc url [Connecting through datasource 'HikariDataSource ~~~이런식으로 뜹니다~~~중간에 뭐가 잘못된거 같은데 어디를 수정해야하나요?
-
해결됨Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기
섹션 5-26. AWS EC2 서버 배포 파트 질문입니다.
영상의 10분 38초 기준으로 Postman을 사용했을 때 결과가 다르게 나옵니다.처음에는 "Error: connect ECONNREFUSED IPv4:8080" 라는 에러가 반복적으로 발생했습니다.혹시 제가 뭔가 놓쳤나 싶어 인스턴스를 새로 만들어 시도해보고, 이전 섹션부터 다시 꼼꼼히 확인도 했습니다.또, 중간에 인스턴스가 끊기는 문제가 있어 micro에서 small로 업그레이드까지 해보았는데요.여러 방법을 시도했음에도 불구하고 지금은 500 Internal Server Error만 발생하고 있어 해결책이 떠오르지 않아 질문을 남깁니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
질문있습니다!
강사님께서 API 가 프로그램 간 정해진 약속을 해서 정해진 기능을 수행하는 것이라고 말씀해주셨는데 그럼 프로토콜과 API 가 같은 건가요??