묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
유레카 서버가 종료된상태에서 질문
안녕하세요유레카 서버가 종료된경우클라이언트에서 연결오류 관련 에러로그가 많이 뜨더라구요운영 환경에서 클라이언트앱 쪽에 이런 로그가 너무 많이 발생하는것은 지저분해보여서 간단하게 한줄짜리 커스텀로그로 대체하고싶은데 방법이 있을까요?
-
해결됨Practical Testing: 실용적인 테스트 가이드
Mockito로 Stubbing하기 8분경 OrderRepository 테스트
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강의를 보다가 OrderRepository에 대한 테스트는 직접 짜보라는 말씀을 듣고 직접 한번 작성을 해봤습니다. @ActiveProfiles("test") @DataJpaTest class OrderRepositoryTest { @Autowired private OrderRepository orderRepository; @Autowired private ProductRepository productRepository; @DisplayName("원하는 주문 상태를 가진 주문들을 조회한다.") @Test void findOrdersBy() { // given Product product1 = createProduct("001", HANDMADE, SELLING, "아메리카노", 4000); Product product2 = createProduct("002", HANDMADE, HOLD, "카페라떼", 4500); Product product3 = createProduct("003", HANDMADE, STOP_SELLING, "팥빙수", 7000); productRepository.saveAll(List.of(product1, product2, product3)); Order order1 = createOrderWithOrderStatus(List.of(product1, product2), LocalDateTime.now(), PAYMENT_COMPLETED); Order order2 = createOrderWithOrderStatus(List.of(product3), LocalDateTime.now().minusDays(1), PAYMENT_COMPLETED); Order order3 = createOrderWithOrderStatus(List.of(product1, product2, product3), LocalDateTime.now().plusDays(1), PAYMENT_COMPLETED); orderRepository.saveAll(List.of(order1, order2, order3)); // when List<Order> orders = orderRepository.findOrdersBy( LocalDateTime.now().minusDays(1), LocalDateTime.now().plusDays(1), PAYMENT_COMPLETED ); // then assertThat(orders).hasSize(2) .extracting("orderStatus", "totalPrice", "registeredDateTime") .containsExactlyInAnyOrder( tuple(PAYMENT_COMPLETED, 8500, order1.getRegisteredDateTime()), tuple(PAYMENT_COMPLETED, 15500, order3.getRegisteredDateTime()) ); } private Order createOrder(List<Product> products, LocalDateTime registeredDateTime) { return Order.create(products, registeredDateTime); } private Order createOrderWithOrderStatus(List<Product> products, LocalDateTime registeredDateTime, OrderStatus status) { Order order = createOrder(products, registeredDateTime); order.updateOrderStatus(status); return order; } private Product createProduct(String productNumber, ProductType productType, ProductSellingStatus sellingStatus, String name, int price) { return Product.builder() .productNumber(productNumber) .type(productType) .sellingStatus(sellingStatus) .name(name) .price(price) .build(); } }이런 식으로 작성을 하였는데 제가 궁금한 점은createProduct는 대부분의 테스트 클래스에서 사용되는데 하나의 static 클래스와 같이 외부로 분리하는게 좋지 않을까 라는 생각을 해봤습니다. 저는 Order 클래스의 상태 변경을 위해서 updateOrderStatus라는 메소드를 생성 하였는데 (아직 해당 강의를 끝까지는 보지 않고 강의를 보기전에 먼저 테스트 코드를 작성 해보고 있습니다) 이런 식으로 테스트를 위해서 메소드를 생성 하는 경우도 괜찮을까요?제가 작성한 코드의 given 절이 너무 길어지는 느낌을 받았습니다. 현재는 order와 product를 생성 하는 정도이지만 더 복잡한 로직을 생성 할 경우 given이 너무 길어 지는것에 대한 해결 방안이 있을까요? 최대한 구글을 사용하여 찾아는 보았지만 우빈님의 생각도 궁금하여 여쭤보았습니다! 긴 글 읽어주셔서 감사합니다 🙂
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값타입을 엔티티로 승급하면
39:00 쯤에 자체적인 id 가 있다면 엔티티이므로 엔티티의 값을 수정할 수 있다고 말씀하셨는데요.수정할 수 있다는 데이터는 모든 값타입을 의미하는 건 아니라고 받아드려지는데 맞을까요?즉, "값타입(자바 기본값(원시, 포장) , 임베디드, 컬렉션) 들 중에자바 기본값만 수정해도 된다."(임베디드와 컬렉션은 setter메소드를 사용하면 안되니private나 제거를 해야한다고 권장하셨기 떄문입니다.)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
v1에서 POST할때 insert문 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.Postman에서 http://localhost:8080/api/v1/members를 POST하는 것을 하고 있는데실행하면 아래와 같이 뜨고 insert into member (city, street, zipcode, name, member_id) values(NULL, NULL, NULL, 'hello', 1) 도 안뜨고 insert문 또한 한줄로 안나타나고 여러줄로 나옵니다...왜 이런걸까요 ?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 관계 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서 `주 테이블이나 대상 테이블 중에 외래 키 선택 가능`이라고 하셨는데`대상 테이블에 외래키가 있는 일대일 단방향 관계는 JPA에서 지원 안한다는 게` 무슨 말인가요..?그러면 외래 키 선택 기준 이런 거 얘기할 필요 없이 무조건 일대일 단방향 관계에서는 주 테이블에 외래키를 설정해야하는 거 아닌가요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.flush()유무에 대해 질문드립니다.
Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member();member.setName("member1");member.setTeam(team);em.persist(member);//em.flush(); // 영속성 컨텍스트에 있는 쿼리를 db에 전송한다.//em.clear(); // 영속성 컨텍스트를 초기화// 이렇게 하면, 위 em.persist()를 통해 영속성컨텍스트에 있는 Member를 가져오는게 아니라, // em.find()를 할때 db에서 select를 해서 가져온다. Team findTeam = em.find(Team.class, team.getId()); List<Member> members = findTeam.getMembers(); for (Member m : members) { System.out.println("m = " + m.getName()); }여기에서 em.flush()와 em.clear()를 하지않으면, findTeam에 Members가 비어있는 이유가 무엇인지 모르겠습니다.em.flush()를해서 db에 있는 Team데이터와, em.flush()하지않은 영속성컨텍스트에 있는 Team데이터가 무엇이 다르길래 영속성컨텍스트에서 em.find를 하면 members가 비어있는것인지 모르겠습니다. 즉, db를 통해 em.find하면 members가 있고, 영속성컨텍스트를 통해 em.find를 하면 members가 없는데 왜 그런것인가요?1차캐시에 team데이터를 저장하는것과 db에 team데이터를 저장하는것이 다른가요? 강의를 계속 봐도 이해가 가질않아 질문드립니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트 환경 통합하기 질문 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 테스트 환경이 다르면 스프링을 새로 띄워야 된다고 하셨는데, 여기서 테스트 환경이란게 테스트 클래스마다 의존 관계를 주입 받는 클래스가 하나라도 달라지면 스프링이 새로 뜨게 되는 건가요??
-
미해결실전! Querydsl
h2db와 QueryDSL사용시 preparedStatement의 한글깨짐
영한님 강의에서 where절에 들어가는 모든 구분은 전부영어입니다.ex) where(member.username.eq("member1")) 근데 저는 한글데이터를 넣고 where을 해보니 원하는 결과가 조회되지않았고 다음과같은 로그가 출력됩니다. org.hibernate.orm.jdbc.bind : binding parameter (1:VARCHAR) <- [%2프%]/**/prep5.setString(1, "%2\u1111\u1173%"); '2프'라는 글자를 where절에 넣어서 조회하려하고 hibernate에서는 실제로 %2프% 라는 원하는 결과를 바인딩 해줬습니다. 하지만 h2db의 로그에서는 2는 제대로지만 프가 ㅍ과 ㅡ를 분리하여 유니코드로 치환된 상태로 바인딩이 되서 분명 데이터가 있음에도 아무데이터도 조회되지않습니다. h2db에서 prepareStatement에 한글을 바인딩할때 깨지는현상 어떻게 해결할 수 있나요??
-
미해결Practical Testing: 실용적인 테스트 가이드
하위 레이어가 상위 레이어를 알고 있는 경우에 대해 질문 있습니다.
안녕하세요. 하위 레이어가 상위 레이어를 알고 있는 경우는 좋지 않다고 하셨는데 만약에 도메인을 순수하게 유지하고 싶어서도메인 엔티티와 jpa 엔티티를 분리하고, service와 jpaRepository에 DIP를 적용하게 되면service에서는 repository 인터페이스를 사용하고,repository 인터페이스를 구현하는 repositoryImpl에서 jpaRepository를 사용하게 될 것 같습니다.이 경우에 repositoryImpl에서는 jpa 엔티티 -> 도메인 엔티티로 변환을 하고, 도메인 엔티티를 service로 반환해주어야 할 것 같은데이렇게 되면 하위 레이어인 infrastructure(persistance) 레이어에서 상위 레이어에 있는 도메인 엔티티에 대한 의존성이 생긴다고 생각하는데 이런 경우는 상위 레이어에 의존성이 생겨도 상관 없는 경우인가요??테스트 강의와 무관한 질문을 드려서 죄송합니다 ㅠㅠ
-
미해결Practical Testing: 실용적인 테스트 가이드
경계값 테스트 작성 시 질문 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 경계값을 테스트할 때는 하나의 테스트 메서드 안에 모두 작성하는게 맞는건가요?상품 등록시 상품 번호의 증가로 예를 들면한 자리 -> 한 자리 ( 1 -> 2 )한 자리 -> 두 자리 ( 9 -> 10 )두 자리 -> 세 자리 ( 99 -> 100 ) 이런 식으로 작성할 수 있을 것 같은데, 이렇게 경계값에 대한 모든 경우를 한 메서드에 작성하는게 맞는 것 같긴한데, 경계값이 많아지면 좀 알아보기 힘들 것 같아서 여쭤봅니다..
-
미해결실전! Querydsl
프로젝트 세팅시 궁금한게 있습니다 !
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]plugins { id 'java' id 'org.springframework.boot' version '3.4.2' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } 프로젝트 세팅하면서 두 가지 궁금한게 있습니다. 강의 교안에 나와있는것처럼 세팅을 완료하였는데, "Gradle -> Tasks -> other -> compileQuerydsl" 여기서 compileQuerydsl이 보이지 않습니다. compileJava를 하면 Q도메인이 생성되는데, 이러면 문제 없는게 맞을까요 ?Q도메인을 보면, 아래와 같이 javax.annotation.이 생성되는데, 이건 jakarta가 아니어도 상관 없는것일까요? package study.querydsl.entity; import static com.querydsl.core.types.PathMetadataFactory.*; import com.querydsl.core.types.dsl.*; import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; /** * QHello is a Querydsl query type for Hello */ @Generated("com.querydsl.codegen.DefaultEntitySerializer") public class QHello extends EntityPathBase<Hello> { private static final long serialVersionUID = 1910216155L; public static final QHello hello = new QHello("hello"); public final NumberPath<Long> id = createNumber("id", Long.class); public QHello(String variable) { super(Hello.class, forVariable(variable)); } public QHello(Path<? extends Hello> path) { super(path.getType(), path.getMetadata()); } public QHello(PathMetadata metadata) { super(Hello.class, metadata); } } 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API에서 컬렉션을 직접 반환하는 부분에 관한 질문입니다.
API 개발 기본 - 회원 조회 API의 강의에서, membersV1은 엔티티를 직접 반환하기 때문에 좋지 않고, 컬렉션을 직접 반환하기 때문에 향후 API 스펙을 변경하기 어렵다고 하셨습니다. 따라서 membersV2에서는 엔티티를 직접 반환하지 않고 API 스펙에 따라 DTO를 맞춰 설계하고, 별도의 필드가 생길 것을 대비해 Result 클래스로 한번 감싸서 넘긴 것을 알 수 있었습니다.이후 API 개발 고급부터는, Result 클래스로 감싸지 않고 List<DTO>로만 API의 응답값을 설정하시던데, 일부러 Result 클래스로 감싸는 부분을 생략하신 것인지 궁금합니다. 이와 별개로 실무에서는 Result와 같은 클래스로 감싸고 응답하는 것이 일반적일까요?
-
미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
리액트 연결
안녕하세요! 프론트엔트 초보 개발자입니다.백엔드는 단 한 번도 건드려본적이 없어서 어떤 구조인지도 잘 몰라요 ㅠㅠ아직 정말 지식 수준이 얕습니다.이 강의를 완강한 후에, 리액트로 프론트를 만져보고 싶은데요...이후에 프로젝트에서 프론트, 백 따로 개발 후에 둘이 연결을 하려면 어떻게 해야하나요..?초보자 수준에서 간단히 설명 가능한가요..?
-
미해결Practical Testing: 실용적인 테스트 가이드
비지니스 로직이 퍼시스턴스 계층에 침투하는 경우 관련해서 질문드립니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 Business Layer 테스트 (1) 강의 시작 부분에서 Querydsl을 쓰거나 별도의 DAO를 사용하면서 비지니스 로직이 퍼시스턴스 계층에 침투하게 작성하는 경우가 있다고 하셨는데 좀 더 구체적인 예시를 들어주실 수 있나요?그리고 요구사항이 복잡하여 엔티티를 가져오는 쿼리 역시 복잡해지는 경우, 이는 비즈니스 로직이 침투한 것으로 봐야할까요? 일반적인 CRUD 쿼리와 달리 특정 쿼리만 복잡하다면 추가적인 요소가 반영되었을 수도 있다 생각했고 따라서 이러한 경우를 비즈니스 로직의 개입으로 판단해야 하나 의문이 들어 질문 드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 연결관련 에러 질문있습니다
application.yml파일을 작성하기 전에는 libraryappapplicition을 실행하면 잘 되었었은데강의를 따라 yml파일을 작성이후 연결이 되지않는다는 에러가 발생하였습니다 driver-class-name에서 driver를 찾을수 없다고 나오는데 이 문제 때문인것 같아요 혹시 버전이나 어떤 문제 때문인지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
dtype not found 에러
package hellojpa; import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name="DTYPE") public class Item { @Id @GeneratedValue private Long id; private String name; private int price; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }이런 식으로 작성해 둔 상태고, create Table 작성 시 DTYPE varchar(31) not null,는 나오는데 그 이후 alter table에서 아이템이 나오지 않고, dtype insert가 안 됩니다
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
목록처리(2) 부분 페이징 처리 관련 오류발생하여 질문드립니다.
페이지처리하는 부분 오류 발생하여 질문 드립니다. import React, { useEffect, useState } from "react"; import { getList } from "../../api/todoApi"; import useCustomMove from "../../hooks/useCustomMove"; import PageComponent from "../common/PageComponent"; const initState = { dtoList: [], pageNumList: [], pageRequestDto: null, prev: false, next: false, totalCount: 0, prevPage: 0, nextPage: 0, totalPage: 0, current: 0, }; const ListComponent = () => { const { moveToList, page, size } = useCustomMove(); const [serverData, setServerData] = useState(initState); useEffect(() => { getList({ page, size }).then((data) => { setServerData(data); }); }, [page, size]); return ( <div className="border-2 border-blue-100 mt-10 mr-2 ml-2"> <div className="flex flex-wrap mx-quto justify-center p-6"> {serverData.dtoList.map((todo) => ( <div key={todo.tno} className="w-full min-w-[400px] p-2 m-2 rounded shadow-md" > <div className="flex"> <div className="font-extrabold text-2xl p-2 w-1/12"> {todo.tno} </div> <div className="text-1xl m-1 p-2 w-8/12 font-extrabold"> {todo.title} </div> <div className="text-1xl m-1 p-2 w-2/10 font-medium"> {todo.dueDate} </div> </div> </div> ))} </div> <PageComponent serverData={serverData} movePage={moveToList} ></PageComponent> </div> ); }; export default ListComponent;listComponent에서 initState 생성하고, setServerData 해서 pageComponent로 전달. const PageComponent = ({ serverData, movePage }) => { console.log("data.prev: " + serverData.prev); return ( <div className="m-6 flex justify-center"> {serverData.prev ? ( <div className="m-2 p-2 w-16 text-center font-bold text-blue-400 " onClick={() => movePage({ page: serverData.prevPage })} > Prev{" "} </div> ) : ( <></> )} {serverData.pageNumList.map((pageNum) => ( <div key={pageNum} className={`m-2 p-2 w-12 text-center rounded shadow-md text-white ${ serverData.current === pageNum ? "bg-gray-500" : "bg-blue-400" }`} onClick={() => movePage({ page: pageNum })} > {pageNum} </div> ))} {serverData.next ? ( <div className="m-2 p-2 w-16 text-center font-bold text-blue-400" onClick={() => movePage({ page: serverData.nextPage })} > Next </div> ) : ( <></> )} </div> ); }; export default PageComponent;pageComponent에서 serverData받아서 데이터 사용하는 부분.이러한 오류 발생합니다...아무리 봐도 어느 부분이 문제 인지 모르겠어요.serverData.prev 로그 찍어봐도 false라고 남는데.. 그리고 또 렌더링을 해서 undefined상태인건지... 어느 부분이 문제일가요 ㅠㅠ? prev를 부분을 지우면 pageNumList 에서 문제가 발생하여 prev만의 문제가 아니라 serverData자체를 받아오지 못하는거같습니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Maven resources compiler 에러가 뜨면서 빌드가 안되네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JpaMain.java 실행시 이런 에러가 계속 발생합니다. Maven resources compiler: Maven project configuration required for module 'hello-jpa' isn't available. Compilation of Maven projects is supported only if external build is started from an IDE. persistence.xml은 다음과 같고 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <!--<property name="hibernate.hbm2ddl.auto" value="create" />--> </properties> </persistence-unit> </persistence>pom.xml은 다음과 같이 했습니다. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> <groupId>org.example</groupId> <artifactId>hello-jpa</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.3.10.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> </dependencies> </project>진짜 3시간 넘게 하고 있는데 뭐가 문제인지 모르겠네요 pom.xml에 빌드가 등록 안 되어 있다길래 챗지피티한테 물어봐서 따로 추가도 해봤는데 저기서부터 막혀버리니 답이 없네요 진짜 ㅋㅋㅋ 무슨 정확한 에러 사유도 안 뜨고Maven resources compiler: Maven project configuration required for module 'hello-jpa' isn't available. Compilation of Maven projects is supported only if external build is started from an IDE.이런 문장만 계속 보여주니까 답답해 미쳐버리겠습니다.. 데이터베이스는 강의 환경하고 맞추려고 1.4.200으로도 해보고 최신버전으로도 해봤고java 버전도 17, 11 둘 다 해봤는데 둘 다 똑같은 에러가 발생해서 미쳐버리겠습니다 아 참고로 강의에서 제공해주신 최신 버전 코드도 다운 받아서 open으로 열어봤는데 다 똑같은 에러가 발생합니다. 애초에 프로젝트 만들 때부터 잘못 만들어진건지 계속 똑같이 저 상태인데 왜 그러는걸까요..
-
미해결실전! 스프링 데이터 JPA
메소드 이름으로 쿼리 생성에 대한 질문
스프링 데이터 JPA가 제공하는 쿼리 메소드 기능 조회: find…By ,read…By ,query…By get…By예:) findHelloBy 처럼 ...에 식별하기 위한 내용(설명)이 들어가도 된다이 부분에 대한 의문입니다 spring공식문서를 찾아보고 chatgpt 에 질문도 해본 결과 findBy는 항상 붙어있어야 하고 사이에 단어를 넣어 작성하면 안된다는게 제가 얻은 답변인데 강의 자료에는 가능하다고 나와 있습니다어떤게 정확히 맞는건지 혼란스럽네요시간이 흘러서 문법 규칙이 바뀌어서 그런건지이와 관련해 답변 부탁드리겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
updateItem 변경감지 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Book에는 저 세 가지 필드 말고도 다른 필드도 존재하는데현재 merge가 아니라 변경 감지로 값을 수정하는 것이기 때문에@Transactional public void updateItem(Long itemId, String name, int price, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setPrice(price); findItem.setName(name); findItem.setStockQuantity(stockQuantity); }다음과 같은 형태로 사용해도 다른 필드는 null 값으로 바뀌지 않는 거 맞을까요?