묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
파라미터 로깅 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Hibernate: drop table if exists memberHibernate: create table member ( id bigint not null auto_increment, username varchar(255), primary key (id) ) engine=InnoDBHibernate: insert into member (username) values (?)insert시에 id 값이 보이지 않는 이유가 무엇일까요 ㅠㅠ파라미터는 id, username 2개가 나와야 하는데 1개만 나와서 질문 드립니다.spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.type=trace p6spy도 똑같이 하나만 나오더라구요
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
namespace
혹시 namespace가 안보이면 해결방법이 있을까요?? 업데이트를 해도 안되고 sts 를 깔아보려고 해도 계속 오류가 나오네요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest 오류 관련 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 내용]오류 내용application.ymlMemberMemberRepositoryMemberRepositoryTestMysql 접속으로 변경ddl-auto: create@GeneratedValue위와 같은 조건으로 수행했는데 usermember_seq 테이블을 생성하지 못하고 존재 하지 않는 다는 오류가 발생합니다. 고민고민 하다 도저히 찾을수 없어 질문 드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의에서 JpaRepository를 상속받는 방식은 사용하지 않으시는지 궁금합니다!
제가 배웠던 JPA는 Member를 예로 들면 public interface MemberRepository extends JpaRepository<Member, Long> 이런 식으로 JpaRepository를 상속받아서 쓰는 것이었는데, 영한님 강의 초반부 수강 중인데 이런 내용이 없더라구요..! 강의 뒷부분에 이런 내용이 나오나요? 아니면 이 방식은 사용하지 않으시나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Item, OrderItem 연관관계
안녕하세요 엔티티 연관관계에대해 공부하던 중 질문이 생겨 글 남깁니다!Order에서 주문이 들어가면 Item에있는 stockQueantity가 하나씩 줄어든다고 했는데 OrderItem->Item의 단방향 연관관계이면 Item에서는 어떤게 주문이 들어갔는지 어떻게 알고 하나씩 줄어드나요??
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Eureka 서버 도커 환경 연결.
안녕하세요, 현재 Spring Cloud와 Docker 강의를 보며 개인적으로 Docker 환경에 Eureka 서버를 배포하고 공부 중입니다. 현재 Eureka 서버 및 데이터베이스, 스프링 환경을 Docker 환경에 배포하는 것까지는 완료한 상태입니다. 하지만 문제는 Eureka 서버에서 스프링 서버로의 링크를 클릭하면 "http://2a2bf313bd4f:60000/actuator/info" 이 사이트에서 HTTPS를 지원하지 않기 때문에 경고가 표시됩니다. 이 문제를 어떻게 해결할 수 있는지 궁금합니다.Eureka 서버에 등록된 정보링크 정보 현제 docker-compose file 정보 입니다.services: spring-cloud-config-service: build: ./spring-cloud-config-service container_name: spring-cloud-config-service ports: - "8888:8888" networks: - my-network spring-cloud-discovery: build: ./spring-cloud-discovery container_name: eureka-server ports: - "8761:8761" networks: - my-network environment: eureka.client.serviceUrl.defaultZone: http://spring-cloud-discovery:8761/eureka/ mysql: image: mysql:8.0 container_name: mysql environment: MYSQL_ROOT_PASSWORD: MYSQL_DATABASE: employees ports: - "3306:3306" networks: - my-network spring-cloud-study-user-service: build: ./spring-cloud-study-user-service container_name: spring-cloud-study-user-service ports: - "60000:60000" environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/employees SPRING_DATASOURCE_USERNAME: SPRING_DATASOURCE_PASSWORD: SPRING_CLOUD_CONFIG_URI: http://spring-cloud-config-service:8888 eureka.client.serviceUrl.defaultZone: http://spring-cloud-discovery:8761/eureka/ depends_on: - mysql - spring-cloud-discovery - spring-cloud-config-service networks: - my-network networks: my-network: driver: bridge Spring-cloud-study-user-service.yml 파일입니다.server: port: 60000 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql:3306/employees # url: jdbc:mysql://localhost:3306/employees username: password: jpa: hibernate: ddl-auto: update show-sql: true cloud: config: uri: http://config-service:8888 name: spring-cloud-study-user-service application: name: spring-cloud-study-user-service eureka: instance: preferIpAddress: true instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} client: service-url: defaultZone: http://127.0.0.1:8761/eureka fetch-registry: true register-with-eureka: true Spring-cloud-discovery yml 파일 정보입니다.server: port: 8761 spring: application: name: spring-cloud-discovery eureka: instance: hostname: eureka-server client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://127.0.0.1:8761/eureka server: enableSelfPreservation: false
-
해결됨실전! 스프링 데이터 JPA
디펜던시 설명에서 아쉬운점이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니오[질문 내용]implementation, compileOnly, runtimeOnly 등 각각이 어떻게 작동하는지와 어떤 경우에 어떤 라이브러리를 어떤 방식으로 등록하는지에 대한 설명이 없는것 같아서 조금 아쉬운 마음입니다. 혹시 새로운 강의에서는 좀 더 디테일한 설명이 있었으면 좋겠다는 의견 드립니다. 감사합니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
SecurityMockContext 로부터 유저 정보를 가져오기
@Test @DisplayName("글 삭제") @CustomMockUser void test7() throws Exception { // given UserPrincipal principal = (UserPrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); Member byId = memberRepository.findById(principal.getUserId()).orElseThrow(UserNotFound::new); Post post = Post.builder() .title("Hello World") .content("Hello Java") .member(byId) .build(); postRepository.save(post); // expected mockMvc.perform(delete("/posts/{postId}", post.getId())) .andExpect(status().isOk()) .andDo(print()); }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
신규 강의 질문
안녕하세요. 기존 강의 듣는 와중에 신규 강의가 추가되었는데 기존 강의 스킵하고 신규로 들어도 될까요?? 환경은 Spring Boot 3 이후 버전으로 설정하였습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mybatis적용2테스트시 오류발생
https://drive.google.com/file/d/1rDjuTFQjZZOER9yTzPuAWsmouu9D_p26/view?usp=sharing미치겠네요. 그대로 따라했는데 왜오류일까요
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
configuration key file 경로에 한글
mac os m1 사용중인데, configuration 서버의 bootstarp에 적은 key file 경로에 한글이 들어가면 경로 인식이 제대로 안되는것 같습니다.물론 한글이 안들어가는 경로상에 key 파일을 위치시켜도 되지만, 프로젝트 자체를 한군데에서 관리해야 나중에 다시 공부할때 헷갈리지 않을 것 같아서 한글경로가 들어간 위치에 key를 두고 싶은데, 혹시 한글이 들어가도 location 설정을 문제없이 하는 방법은 없을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
컨트롤러 패키지명
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러를 두는 패키지명을 controller가 아닌 web으로 하신 이유가 궁금합니다
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO의 사용 범위와 Controller에서 엔티티 생성 가능 여부
안녕하세요.해당 강의를 수강하다 궁금증이 생겨 질문 드립니다.강의에서는MemberService 같은 경우에@Transactional public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); }이런식으로 엔터티를 파라미터로 받고,MemberApiController 같은 경우에는@PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id); }별도의 DTO를 파라미터로 받아 member 엔티티 객체를 생성하여 set 해주는 식으로 진행하였는데,(set 말고 생성메소드를 이용해야하는건 알아요!) 1. 엔티티를 외부에 노출하면 안되고, API 스펙이 바뀌어도 문제가 생기지 않기 위해 Controller단에 파라미터 및 반환값에 DTO를 사용하는 것은 당연하다. 그렇다면 서비스나 리포지토리에서는 파라미터로 엔티티를 받아야 하나요? DTO를 받아야 하나요??2. 만약 DTO를 Controller에서만 받고, Service단에서 파라미터로 엔티티를 받는다면, Controller 단에서 엔티티 객체를 생성하여 Dto의 정보를 넣어준 뒤 Service단으로 보내줘야하는데, Controller단에서 엔티티를 생성하는 것이 괜찮은 방법인가요? 어떤게 더 좋은 방법이고, 실무에서 더 많이 쓰는 방법인지, 어떤 장단이 있는지도 궁금합니다.
-
미해결실전! Querydsl
querydsl 의 offset 정의가 헷갈립니다.
repository에 1,2,3,4,5를 차례로 저장하고offset을 1로, limit을 2로해서 조회하면 [2,3], [4,5]가 조회되는건가요? 아니면 [3,4] ,[5]가 조회되는건가요? offset이 0부터시작인데 1로 지정하면 2페이지부터 조회한다는건지? 두번째 데이터부터 페이징을 시작한다는건지요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
리액트 부트연결
리액트랑 부트 연결하는 방법 axios까지 코드입력했는데 cmd라던지 연동하는 방법은 안알려주시나요?
-
해결됨실전! Querydsl
MemberJpaRepository 테스트 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]\querydsl\src\test\java\study\querydsl\repository\MemberJpaRepositoryTest.java:21: error: cannot find symbol MemberJpaRepository memberJpaRepository; ^ symbol: class MemberJpaRepository location: class MemberJpaRepositoryTest MemberJpaRepository 테스트 오류를 어떻게 확인해야되나요 동일하게 질문하신 분이 계신데 드라이브 통해서 파일 올리라고만 답변되어있어서 질문 드립니다. 강의와 같은 경로에 repository 생성 후 테스트를 돌리면 심볼 오류가 납니다.확인 부탁드립니다!! generated/study/querydsl/repository/MemberJpaRepository 소스 코드 경로https://drive.google.com/file/d/1wV-xy9-oUE0TgfONiumr5dr2TniGHdj_/view?usp=sharing
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
/api/v1/members 버그
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강사님처럼 코드를 다음과 같이 작성했습니다.MemberApiController.javapackage jpabook.jpashop.api; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import jpabook.jpashop.domain.Member; import jpabook.jpashop.service.MemberService; import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @GetMapping("/api/v1/members") public List<Member> membersV1() { return memberService.findMembers(); } @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long joinedMemberId = memberService.join(member); return new CreateMemberResponse(joinedMemberId); } @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); } @Data static class CreateMemberRequest { @NotEmpty private String name; } @Data @AllArgsConstructor static class CreateMemberResponse { private final Long id; } @Data static class UpdateMemberRequest { @NotEmpty private String name; } @Data @AllArgsConstructor static class UpdateMemberResponse { private Long id; private String name; } } MemberService.javapackage jpabook.jpashop.service; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class MemberService { private final MemberRepository memberRepository; /* * 회원 가입 * */ @Transactional public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); } /* * 중복 확인 메서드 * */ private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByName(member.getName()); if (!findMembers.isEmpty()) { throw new IllegalStateException("이미 존재하는 회원입니다."); } } // 회원 전체 조회 public List<Member> findMembers() { return memberRepository.findAll(); } public Member findOne(Long memberId) { return memberRepository.findOne(memberId); } @Transactional public void update(Long id, String name) { Member member = memberRepository.findOne(id); member.setName(name); // 영속성 컨텍스트에서 엔티티를 수정하면 트랜잭션 커밋 시점에 변경 감지(Dirty Checking)가 동작한다. } } MemberRepository.javapackage jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jpabook.jpashop.domain.Member; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import java.util.List; // 컴포넌트 스캔에 의해 // 스프링 빈에 자동으로 등록 @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List<Member> findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } public List<Member> findByName(String name) { return em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); } } Member.javapackage jpabook.jpashop.domain; import jakarta.persistence.*; import jakarta.validation.constraints.NotEmpty; import lombok.Getter; import lombok.Setter; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @NotEmpty private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); } 그리고 postman으로 localhost:8080/api/v1/members로 호출을 하게 되면 다음과 같이 무지막지하게 많은 양의 결과가 나옵니다. 왜 그러는 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
build.gradle 에러
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]build.gradle에서 에러가 발생합니다 자바 버전 17 사용했습니다Could not apply requested plugin [id: 'io.spring.dependency-management', version: '1.1.5'] as it does not provide a plugin with id 'io.spring.dependency-management'. This is caused by an incorrect plugin implementation. Please contact the plugin author(s).> Plugin with id 'io.spring.dependency-management' not found.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
yml파일 설정, 그리고 tomcat 서버로 작동
gateway.routes 형식이 아니라 위 사진 처럼중간에 mvc가 들어가는 데 버전 업 되면서 문법이 바뀐걸 까요?apigateway-service 동작할 때 netty 서버로 동작하지 않고 tomcat 으로 작동하는데 이것도 버전으로 인해 바뀐 걸 까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드 연결하는데 데베에 문제가 있다고 하네요
Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:191) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentWithDefaults(JdbcEnvironmentInitiator.java:143) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]이런식의 오류가 났는데 데베설정이 잘못돼서 그런건가요 코듣상의 문제는 없는거 같습니다.