묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 도중 에러 발생
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](filter.includeTestsMatching) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s 테스트 맴버 실행 도중에 위와 같은 오류가 발생하였습니다. 뭐가 문제인걸까요? ㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DTO 변환 시 우아한형제들은 어떻게 처리하시나요?
샘플에서 DTO는 생략하셔서 아쉽습니다. DTO 변환으로 modelmapper나 mapstruct 정도 쓰는것같습니다.물론 mapper 없이도 하시는것 같던데요. 우아한형제들은 mapper에 대한 고견이 어떠신지 매우 궁금합니다!~
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
참조에 관해 질문드립니다
A->B->C 로 참조가 되어 있어서 A를 지우려면 B를 먼저 삭제하고 B를 지우려면 C가 먼저 삭제되어져야 한다고 했을 때, 만약 C가 A를 참조하게 될 경우 싸이클이 생겨서 서로 삭제가 안되는 문제가 생기는데인. 웹던이나 DB단에서 c->a로 참조를 걸려할 때 잘못된 것으로 인지하고 막고 싶은데. 보통 이럴때는 어떤식으로 해결을 해야하나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Controller에서 Repository 를 직접 사용할 때.
간단한 조회는 Controller 에서 직접 Repository 를 사용하기도 한다. 라는 설명에 대한 질문입니다. 예제에서는 모든 Transaction 이 Service layer 에서 관리되는데 Controller에서 직접 Repository 를 접근할 때에는 tx 가 암묵적으로 생성되는 것인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원기능 테스트 - insert 안나가는 이유
안녕하세요? 회원기능 테스트 강의 중 질문드립니다. @Trnasactional이 적용된 @Test에서 persist를 해도 DB에 안나간다고 하셨는데 이는 H2 DB에서만 그런건가요? MySQL도 그런가요? H2의 경우 sequence를 이용해 @GeneratedValue를 관리하는데 (로그 보면), MySQL의 경우는 auto_increment를 사용하면 DB에 한번 다녀와야 (flush되어야 = insert가 나가야) member의 id를 알 수 있는게 아닌가 해서요. 비슷한 사례(?)로 Spring Data JPA에서 .save(entity)만 해도 flush 되서 insert 쿼리가 나가는 것처럼요. 강의 잘 보고 있습니다! 답변 미리 감사드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원기능 테스트에서 질문드립니다.
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compile('com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7') compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test'} spring: datasource: url: jdbc:h2:tcp://localhost/~/Dev/projects/book/db;MVCC=TRUE username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: truelogging: level: org.hibernate.SQL: debug org.hibernate.type: trace package com.ym.book.shop.service;import com.ym.book.shop.domain.entity.Member;import com.ym.book.shop.repository.MemberRepository;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.transaction.annotation.Transactional;import static org.junit.Assert.*;@RunWith(SpringRunner.class)@SpringBootTest@Transactionalpublic class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입()throws Exception{ //given Member member = new Member(); member.setName("Kim"); //when Long saveId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(saveId)); } @Test public void 중복_회원_예외()throws Exception{ //given //when //then }}결과 :2019-10-06 14:52:56.074 INFO 2244 --- [ Test worker] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory 2019-10-06 14:52:56.173 DEBUG 2244 --- [ Test worker] org.hibernate.SQL : select member0_.member_id as member_i1_4_, member0_.city as city2_4_, member0_.street as street3_4_, member0_.zipcode as zipcode4_4_, member0_.name as name5_4_ from member member0_ where member0_.name=? Hibernate: select member0_.member_id as member_i1_4_, member0_.city as city2_4_, member0_.street as street3_4_, member0_.zipcode as zipcode4_4_, member0_.name as name5_4_ from member member0_ where member0_.name=? 2019-10-06 14:52:56.204 DEBUG 2244 --- [ Test worker] org.hibernate.SQL : insert into member (member_id, city, street, zipcode, name) values (null, ?, ?, ?, ?) Hibernate: insert into member (member_id, city, street, zipcode, name) values (null, ?, ?, ?, ?) 2019-10-06 14:52:56.216 INFO 2244 --- [ Test worker] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test: [DefaultTestContext@4d40c3e testClass = MemberServiceTest, testInstance = com.ym.book.shop.service.MemberServiceTest@b322034, testMethod = 회원가입@MemberServiceTest, testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@1ee9b049 testClass = MemberServiceTest, locations = '{}', classes = '{class com.ym.book.shop.ShopApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@275315df, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@47bf348f, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7db5eaa6, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2cda0ac3], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true]] 2019-10-06 14:52:56.223 INFO 2244 --- [ Thread-6] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 2019-10-06 14:52:56.223 INFO 2244 --- [ Thread-6] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2019-10-06 14:52:56.226 INFO 2244 --- [ Thread-6] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2019-10-06 14:52:56.231 INFO 2244 --- [ Thread-6] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. BUILD SUCCESSFUL in 5s 5 actionable tasks: 3 executed, 2 up-to-date 2:52:56 PM: Tasks execution finished ':cleanTest :test --tests "com.ym.book.shop.service.MemberServiceTest.회원가입"'.이렇게 결과가 나옵니다.select, insert가 2번씩 실행이 되는데요혹시 제가 설정이 잘못된 게 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DB Insert할 때 질문입니다.
회원 서비스 개발에서 validateDuplicateMember를 할 때에 동시에 회원가입이 이루어질 때 방지로 name에 유니크를 걸어 주신다고 했는데 이해가 잘 되지를 않습니다. 보통 이름이 같은 사람도 많은데 name 에 unique를 주어도 되는건지 궁금하고요. 동시에 일어났을 때 방지하는 법에 대해 좀 더 자세히 알고 싶습니다~
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
fetch join 시 paging 문제
fetch join시에 distinct를 해도 JPA의 어플리케이션 레벨에서 distinct를 해준다고 하셨는데, paging을 할 경우 제대로 paging이 되는지 궁금합니다~
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
아크 관계의 경우 JPA에서 어떤 식으로 매핑 해야 하나요?
안녕하세요 김영한님 강의 너무 재미있게 잘 보고 있습니다. 소개 영상에서 JPA 약을 어쩜 그렇게 잘 파시던지.. 보면서 "그래 이게 내가 원하는 세상이야" 하고 바로 결제하여 재밌게 보고 있습니다. 물론 책도 구매하여 모니터 받침으로 잘 쓰고 있습니다. ^^b 한 가지 궁금한게 있는데, 아크 관계의 경우에서는 JPA에서 어떻게 처리해야 될지 잘 모르겠습니다. 아크 관계가 실무에서 굉장히 빈번하게 쓰인다고 하는데, 우형에서는 아크 관계를 JPA로 어떻게 매핑 하여 처리하고 계신지 답변해 주시면 감사드리겠습니다.^^
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ManyToOne, @OneToMany연관관계 조회 시 순환참조가 일어나는 부분은 어떻게 해결하여야 하나요?
안녕하세요!다름이아니라 제가 수업을 따라해보던 중 @ManyToOne, @OneToMany으로 연관관계를 맺은 두개의 테이블을 조회 시 아래와 같은 에러를 확인하였습니다.@Entity @Table(name = "MEMBER") @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") Long id; @Column(name = "NAME") String name; @OneToMany(mappedBy = "member") List<Post> posts = new ArrayList<>(); } @Entity @Table(name = "POST") @Getter @Setter public class Post { @Id @GeneratedValue @Column(name = "POST_ID") Long id; String title; String description; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MEMBER_ID") Member member; }Could not write JSON: Infinite recursion (StackOverflowError);제 생각에는 한쪽에서 다른쪽 테이블을 조회 시 순환참조가 일어나는것 같다고 생각하는데 이러한 경우에는 어떻게 처리를 하여야 하는지 궁금합니다.찾아보니 @JsonIgnore를 사용하는 방법이 있는것 같기는한데 올바른 방법이 아닌것 같아서 여쭈어봅니다.좋은강의 감사합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
DTO관련 질뮨드립니다
Member란 엔터티에 컬럼 a, b, c, d가 있습니다 selectA 는 a,b 를 보여주고 selectB 는 b, a를 불러주고 selectC는 a,b,c를 불러온다고 가정하였을 때 1. select A, B, C 에 대해서 다 DTO객체를 만들어주는 것이 괜찮을까요? 2. select A, B는 컬럼 순서만 다를뿐인데 하나의 DTO로 리턴해줄 때 순서를 바꿔줄 수 있나요? 3. 아님 a, b, c를 포함한 DTO를 만들어서 사용하는것이 나을까요? 이렇게하면 라턴해줄 때 null값( selectA를 호출한다면 필드c 가 null값) 생기어서요(프론트엔드 입장에서는 사용할 필드만 보고 싶어질수도 있을거같아서요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
./h2.sh 실행시 퍼미션 에러가 뜨네요..^^ 참고하세요
-bash: ./h2.sh: Permission denied bin 폴더 경로에 가셔서 터미널 여시고 chmod 755 h2.sh <-- 입력하시면 됩니다. 참고로 터미널에서는 h2 DB 종료 단축키는 control + c 입니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Group By가 필요할 때 JPA에서는 새로운 DTO 클래스를 만들어서 결과를 담으시나요?
실무에서 여러 테이블 조인하고 group by까지 해야할 때 ,기존의 엔티티 클래스말고 새로운 DTO 같은 클래스를 만들어서 결과를 받으시나요? 업무적으로 group by가 필요한 부분들은 어떻게 처리하시는지 궁금하네요. 기존의 엔티티로는 힘들어 보여서요.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Group By질문드립니다.
활용편에서 나올 내용같은데 공부하다 궁금해서 문의드립니다. ㅠㅠ querydsl을 적용중이고 A Table year name value 2019 a 10 2019 b 11 2019 c 11 2020 d 9 2020 e 20 이 있을 때 , year로 그룹핑해서 value가 맥스인값을 보여주고 싶습니다. 2019 (b,11) , (c,11) 2020 (e, 20) 이렇게 값을 가져오게 하고 싶습니다. 최종적으로는 (b,11) (c,11)(e,20)로 출력하고 싶습니다. List<a>로 받고 싶습니다. 년도순, 이름순으로 값을 저장하고 싶습니다. a는 Qa를 a로 받은 것입니다. JPAQueryFactory.from(a).transform(groupBy(a.year).as(list(a))); 저는 이정도에서 더이상 진도가 안나네요. ㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JAVA11 - javax.xml.bind.JAXBException 에러
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException JAVA11 에서 에러가 발생하네요 <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> pom.xml에 해당 내용 추가하여 에러 없엤습니다 ㅎㅎ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
여러대 서버에서 사용하는 엔티티가 벌크 연산되는 경우 질문 드립니다.
아래와 같은 상황인 경우에, 어떤방식으로 엔티티들의 영속성을 유지할수 있을까요? - JPA 를 사용하는 API 서버 10대 - JPA 를 사용하는 BATCH 서버 2대 상황 - API 서버 몇개에서, BATCH에서 업데이트 될 엔티티가 영속 상태 - BATCH 서버에서 벌크 연산 수행 위와 같은 경우에 API 서버에서 엔티티들을 어떻게 관리해야하는지 궁금합니다.
-
미해결더 자바, 코드를 조작하는 다양한 방법
제네릭을 쓰는 클래스 생성방법은 없나요?
안녕하세요. 강좌 잘 보고 있습니다. 강좌를 보고 실습하고 있는데요. 제가 좀 변태적인 취향인지라... 제네릭한 클래스를 newInstance 를 이용해서 생성하려고 하는데요. 어떻게 해야할지 도통 감이 안잡히네요.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity 클래스의 역할
안녕하세요. 강사님! 엔티티 클래스가 역할과 책임을 가지고 주도적으로 일을 하는 클래스가 되어야 할까요 아니면 그저 DTO 같은 데이터 저장소로써 역할만 하는것이 나은지 궁금합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2 디비 연결시..
안녕하세요. h2 설치 후 연결 해보면 Database "C:/Users/HA/test" not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146 에러가 나면서 연결이 안되는데 연결 테스트 하기전에 따로 설정해야 할것이 있나요? 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요 좋은 강의 감사합니다!
JPQL쿼리 실행 시 플러시가 자동으로 되는데 그렇다면 JPQL은 1차 캐시를 먼저 조회하지 않는 건가요?