학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강사님 말씀대로 @Rollback(false)을 했음에도 불구하고 H2 데이터베이스에 member테이블은 생겼지만 데이터(행)는 생기지 않았습니다... 애초에 콘솔창에 Rollback 되었다는 구문도 뜨지 않고요... 어떻게 해야 할까요? <실행후 콘솔창> <실행 후 H2>
프로젝트 생성화면 영상에서 설명된 version 1.0.0을 어디서 선택하는지 모르겠음 초기 xml (수정전) 코드 추가버전 V_1 <dependencies></dependencies> 만 복붙 새로고침시 오류메세지 발생 * 8번째줄인 <version>1.0.0</version>으로 바꿔도 마찬가지임 코드 추가버전 V_2 전체복붙 동일한 오류 발생 Maven 번들3로 변경해도 오류는 그대로임 컴퓨터에 설치된 H2 -> v.1.4.193 참고로 H2에서 <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.199</version> </dependency> 버전을 최신으로 등록해봤을땐 H2는 오류메세지가 안뜨긴 함 (이것저것 시도하다가 발견) 안녕하세요. JPA 강의를 수강하려고 자바8버전으로 프로젝트를 생성했으나 위와 같은 오류가 발생하고 있습니다. 커뮤니티에 올라온 기존 답변내용대로 시도해봤으나 오류로 인해 강의진행이 어렵습니다. 빠른 확인을 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. try{ Child child1 = new Child(); Child child2 = new Child(); child1.setName("자식1"); child2.setName("자식2"); Parent parent = new Parent(); parent.setName("아빠"); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.flush(); em.clear(); System.out.println("parent = " + parent.getName()); tx.commit(); }catch (Exception e){ tx.rollback(); }finally { em.close(); } (영속성전이를 설정해둔 상태입니다 em.flush()하는 순간 insert쿼리가 3번나가고 clear()에서 영속성 컨텍스트를 초기화 하니까 아래 parent를 println으로 찍을 때 select쿼리가 나가야 할 것 같은데 따로 안나가고 그대로 아빠라는게 찍히는데 왜 이런걸까요? 이건 그냥 영속성컨텍스트와 무관한 객체의 값을 찍은걸까요?
웹 계층 개발챕터 강의를 진행하고 있는 수강생입니다. 문득 궁금한점이 생겨 질문 남기게되었습니다. 코드를 작성하고 서버를 재실행하면 기존에 db에 넣어둔 데이터가 다 날아가고 없어지는게 서비스로직에 달려있는 @Transactional 어노테이션 때문인가요? 테스트코드에서의 @Trasactional 어노테이션의 경우 테스트데이터의 경우 테스트만 진행하고 테스트된 데이터는 db에 반영을 하지 않기위해서(Rollback) 사용한다고 알고있습니다. 그래서 원래 코드에서도 반영이 되지않는 이유가 서비스로직에 포함된 트랜잭션 어노테이션 때문인지 궁금하여 질문드립니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 공부하는 개발자 최태현님! 너무너무 오랜만에 돌아와서 글 남겨보네요 ㅎㅎ 질문은 아니고 감사의 인사 드리고자 찾아왔어요 🌟 올해 초 쯔음 문의 드렸던 MyBatis 였는데, 이렇게 잊지 않으시고 강의에 업데이트 해주셨네요 ㅠㅠㅠ.. 역시 최고 👍👍 바쁘실텐데 좋은 내용 준비해주셔서 이번에도 많은 도움 되었어요!! 코린이 응애 시절, 태현님의 이 강의를 시작으로 개발 흐름을 이해하기 시작하며 재미붙이던때가 어제같은데,,, 지금은 어느덧 서비스 개발팀에 와서 인턴 생활 중이네요 :) 강의로 다시 뵐 수 있어 영광이었고, 항상 행복하시길 바라겠습니다 감사합니다 :)
테스트용 데이터를 추가하기 위해 아래와 같은코드를 만들었습니다. @Component @RequiredArgsConstructor public class TestDataInit { private final ItemService itemService; private final ItemRepository itemRepository; /** * 테스트용 데이터 추가 */ @PostConstruct public void init() { itemService.saveItem(new Book("김영한","츨핀시한빛")); itemService.saveItem(new Book("호날두","출판사멩구")); //오류 발생// itemRepository.save(new Book("a","출판사a")); itemRepository.save(new Book("b","출판사b")); } } 한번은 itemService를 이용하여 값을 넣었고 다른 한번은 itemRepository를 이용하여 값을 넣었습니다. 제 단순한 생각으로는 '어차피 itemService는 itemRepository에 바로 위임을하니 바로 itemRepository로 저장하자' 여서 실행했더니 localhost에서 연결을 거부했습니다. 오류가 나왔습니다. <질문> 왜 itemRepository로 저장하면 안되고 itemService로만 저장해야 데이터가 추가되는 지 궁금합니다.
마이크로서비스 양질의 내용을 수강중인 학생입니다. 지금 kafka source connector와 mariadb를 연결하는 과정에서 database url을 찾을 수 없다는 에러가 계속 발생중입니다. 혹시 동일한 현상을 해결하신 선배님이 계시거나, 아시는분의 도움을 얻고자 글 올립니다. 일단 db는 정상 실행되고 있습니다. url/user/password/table name까지의 정보는 완전 일치합니다. 증상은 아래와 같습니다. data source 생성 과정 source connector 상태 정보 url 정상 유무
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의 코드를 그대로 따라가고 있지는 않고 기존에 알고 있던 내용이랑 합쳐서 코드를 작성하고 있습니다. Controller @PutMapping("/user") public void updateUserName(@RequestBody UpdateUserDto updateDto) { userService.updateUserName(updateDto.getId(), updateDto.getName()); } Dto public class UpdateUserDto { private long id; private String name; public long getId() { return id; } public String getName() { return name; } Repository @Override public void updateUserName(long id, String name) { String sql = "update user set name = ? where id = ?"; jdbcTemplate.update(sql, name, id); } Service @Override public void updateUserName(long id, String name) { userRepository.updateUserName(id, name); } 수정을 눌렀을 때 name은 정상적으로 값이 넘어오는데 id가 계속 0으로 넘어옵니다,, 등록 시에는 DB에 id가 정상적으로 입력되고 있는데 뭐가 문제일까요?
안녕하세요 강의 잘 듣고 있습니다. 해당 수업을 들으면서 코드를 직접 작성을 하고 있었는데 SecurityConfig의 WebSecurityConfigurerAdapter 가 deprecated가 되어서 인식이 안됬습니다. 그래서 커뮤니티를 통해 어떤 오류가 났는지 다른 회원님의 글을 보고 알게 되어 해당 코드를 인용했음에도 오류가 발생하여 아래와 같이 코드를 수정을 했는데 괜찮을까요? package com.studyolle.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher; import org.springframework.security.web.util.matcher.RequestMatcher; import org.springframework.web.servlet.handler.HandlerMappingIntrospector; @Configuration //스프링 설정 클래스 @EnableWebSecurity //웹 보안 활성화, 웹 보안 설정 재정의 public class SecurityConfig { @Bean SecurityFilterChain filterChain(HttpSecurity http, HandlerMappingIntrospector introspector) throws Exception { RequestMatcher[] matchers = { new MvcRequestMatcher(introspector, "/"), new MvcRequestMatcher(introspector, "/login"), new MvcRequestMatcher(introspector, "/sign-up"), new MvcRequestMatcher(introspector, "/check-email"), new MvcRequestMatcher(introspector, "/check-email-token"), new MvcRequestMatcher(introspector, "/email-login"), new MvcRequestMatcher(introspector, "/check-email-login"), new MvcRequestMatcher(introspector, "/login-link"), new MvcRequestMatcher(introspector, "/profile/*") }; //보안 요청에 대한 권한 및 역활 설정 http.authorizeRequests() //배열에 있는 경로들에 대한 모든 요청을 허용 .requestMatchers(matchers).permitAll() //지저오딘 경로외의 모든 요청은 인증된 사용자만 접근할 수 있도록 함 .anyRequest().authenticated(); // POST에 대한 별도 조건을 설정하려면 추가 코드 필요 return http.build(); } }
안녕하세요. 책 144p 에 " JPA 는 모든 엔티티에 일관된 방식으로 대리 키 사용을 권장한다 비즈니스 요구사항은 계속해서 변하는데 테이블은 한 번 정의하면 변경하기 어렵다. 그런 면에서 외부 풍파에 쉽게 흔들리지 않는 대리 키가 일반적으로 좋은 선택이라 생각한다." 라는 내용이 있는데요. JPA 스펙이 이를 권장하는지의 여부가 궁금합니다. 위 문장이 "~라 생각한다." 라고 되어있어서, 이는 영한님의 생각이신건지 아니면 JPA 스펙에서 인용하신건지 헷갈려서 질문 드립니다.
안녕하세요 실전! 스프링부트와 JPA 활용 1편 강의를 수강 중인데요. 섹션6 주문도메인 개발 중 '주문, 주문상품 엔티티 개발' 강의에서 08:13쯤에 OrderItem에도 상태가 필요하다고 하셨는데 여기서 상태값은 무엇을 말하시는 걸까요? OrderStatus.CANCLE처럼 Enum형식의 상태값을 모아놓은 필드를 말씀하시는 건가요? 맞다면 어떤 상태값이 OrderItem에 들어갈수 있을까요? 주문취소 같은 건 Order에 들어가있고 어떤 값이 필요한지 모르겠습니다. 그리고 바로 그 말씀에 뒤이어 부모 상태로 참고가 가능하다고 하셨는데 어떤 부모의 상태를 말씀하시는 건지 모르겠습니다. 답변 부탁 드립니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
src/main/resources/static/v1/static/js/main.d4f24480.js.map 웹 UI의 보여지는 버튼이라던가 클릭시 나오는 팝업창의 메세지를 한글에서 영어로 바꾸고 싶은데 위에 경로의 파일의 한글부분을 영어로 바꿔도 어플리케이션 실행에는 문제가 없을까요??? <Title>태그나 <Button Title>태그 한글부분을 영어로 바꿔봤는데 웹UI의 한글은 딱히 바뀌지는 않네요 음 너무 복잡하다면 굳이 안해도 되지만 혹시 바꿀수 있는 방법이 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. C:\study\jpashop\jpashop\src\main\java\jpabook\jpashop\JpashopApplication.java:10: error: <identifier> expected hello.setData("hello"); 이런 에러가 뜨는데 원인이 무엇일까요..?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberTest 테스트클래스 testEntity() 코드입니다. Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = new Member("member3", 30, teamB); Member member4 = new Member("member4", 40, teamB); em.persist(member1); em.persist(member2); em.persist(member3); em.persist(member4); //초기화 em.flush(); em.clear(); List<Member> members = em.createQuery("select m from Member m ", Member.class) .getResultList(); for (Member member : members) { System.out.println("member = " + member); System.out.println("-> member.team = " + member.getTeam()); } 처음에 즉시로딩 실행결과로 멤버 조회 쿼리 하나랑 각각 팀 조회 쿼리 +N번 (여기서는 2번) 나가는 것을 확인했습니다. 지연로딩으로도 쿼리실행시점 문제만 다르지 똑같이 member.getTeam() 할때 team쿼리가 나가는 것을 확인했습니다. N+1문제를 해결하기 위해 페치조인을 한다는것은 강의와 학습을 통해 알게되었습니다. 질문이있는데요 처음에 즉시로딩할때 조인쿼리가 안나가고 왜 따로 member, team쿼리가 나간것일까요? 즉시로딩도 N+1문제가 발생하는것이 맞나요? 수정 단건조회 시 즉시로딩으로 left outer join 으로 member와 team이 함께 조회되는것을 확인했습니다. 단건조회가 아니라 memberRepository.findAll() 메소드나 JPQL (select m from Member m) 인경우에는 member와 team이 같은 한 쿼리가 아니라 따로 조회되는 것인가요? 왜 List를 조회할때에는 같이 join해서 쿼리를 날리지않는것일까요?
안녕하세요 강의를 수강하다 제가 잘못 이해하고 있는 부분이 있는 것 같아서 질문드리게 되었습니다. 다음은 "간단한 주문 조회 V2: 엔티티를 DTO로 변환" 강의에서 35초에 해당하는 화면을 캡처한 부분입니다. orderRepository는 @PersistenceContext 처리된 EntityManager를 가지고 있는데 이 때 Transaction의 범위가 어디까지인지를 잘 모르겠습니다. 추측으로는 List<Order> all가 준영속상태로 반환될 것으로 예상했는데 order가 membe프록시 객체를 가지고 있다가 Lazy 강제 초기화가 가능한 것을 보면 영속성 컨텍스트가 여전히 존재하는 상태인 것 같습니다. Transaction의 범위가 어디까지인지 궁금합니다. 감사합니다.