본문 바로가기

Spring

(71)
@SpringBootTest와 @DataJpaTest 차이점 @SpringBootTest와 @DataJpaTest 차이점Spring Application(스프링 어플리케이션)은 ApplicationContext이다. 스프링의 기본 컨셉이 ApplicationContext에 Bean(Object)들을 미리 로드 해놓고 사용하는 컨셉이기 때문에 이걸 로딩하는것도 시간이 꽤 걸린다. 특히 테스트를 계속 돌리면서 개발할때는 한번 올려버리는게 아니고 계속 올려야 하니까 한줄 수정 하고 결과를 보기 까지 시간이 올래 걸리면 지친다.그래서 몇가지 구분을 해놓은게 있다.결론부터 이야기 하면 @DataJpaTest는 @Component를 스캔하지않는다.그래서 @Component붙혀놓은 Class를 함께 사용하려면 @SpringBootTest를 사용하면 된다. @DataJpaTes..
IntelliJ + Gradle로 Spring Data Jpa @ManyToOne 양방향 Mapping하기 Spring Data Jpa @ManyToOne 양방향 Mapping하기 Spring Data Jpa는 굉장히 괜찮은 프레임웍이다. 기능이 많고 유연한데 그만큼 제약이 많고 잘 알고 써야 한다.가장 어려운것은 Mapping이다. 소스코드는 여기https://github.com/Kyeongrok/baseball_mapping 목차는 다음과 같다.1.Project빌드2.필요한 라이브러리 선택- JPA, MySql, JDBC, H23.application-test.yml 만들기5.Team 엔티티(Entity) 만들기6.Lombok 설정7.TeamRepository 만들기8.TeamRepository test code 만들기 인텔리J를 실행 한다.Create Project를 누른다. 좌측 Spring Initi..
Spring Data Jpa @Discriminator 다대일 Mapping Spring Data Jpa @Discriminator 다대일 Mapping 중요한 내용@ManyToOne은 parent를 save 할 때 먼저 Many쪽에 있는 row들을 insert한 다음에 parent를 save할 수 있다.Parent에서 @OneToMany(mappedBy = "parentName") 이런식으로 카멜케이스를 써야함.@OneToMany(mappedBy = "parent_name") 이렇게 쓰면 매핑이 안됨 났던 에러들1.Could not determine type for- Parent에 @OneToMany(mappedBy="parent_table_name")를 빼면 난다. 2.mappedBy reference an unknown target entity property- 알수 없는 ..
@DiscriminatorColumn을 이용한 Spring Data Jpa 상속관계(Inheritance) 매핑 하기 Spring Data Jpa 상속관계(Inheritance) 매핑 하기 Spring Data Jpa를 이용해 Restful Api를 구축하는데 Domain설계부터 다시 하고있습니다. 그런데 Dynamic으로 해야 할 일이 있어서 이 기능을 알아보게 되었습니다. 시나리오 교보문고에 가면 물건들(Item)을 파는데 앨범(Album)도 판다. 사용한것 Spring Data Jpa, Lombok. MySql Lombok을 사용했기 때문에 @Data 어노테이션이 있습니다. 사용한 전략은 조인 전략 매핑을 사용했습니다. 구조 item 이라는 table이 parent(부모), album 이라는 table이 child(자식)구조입니다. Table item과 album 2개만 해보았습니다. item CREATE TABL..
Spring Data Jpa로 Restful API구축 할 때 날짜 출력 설정 JsonConfig.java@Configuration @Slf4j public class JsonConfig { @Bean public ObjectMapper namedObjectMapper() { return Jackson2ObjectMapperBuilder.json() .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .modules(new JavaTimeModule()) .build(); } } restful api로 MySql Datetime을 출력 해줄 때 timestamp로 나오는걸 '날짜T시간' 형식으로 출력하게 해준다.
그래들(gradle)로 스프링 부트 JPA 빌드하고 DB연동 하는 예제 그래들(gradle)로 스프링 부트 JPA 빌드하고 DB연동 하는 예제 화질을 조정해서 보시면 선명하게 보입니다. 소스코드는 아래 링크에 있습니다.https://github.com/Kyeongrok/spring_boot_data_jpa_build 내용은 아래와 같습니다. Intelli J + Gradle로Spring Boot 빌드하기Spring Data Jpa DB연동하기 1.spring boot project빌드하기2.db table생성3.db연동4.test code 작성
Spring Data JPA 날짜 between 1.between 사용법 repository List findByLatestUpdateBetween(Date start, Date end); main.java Date before = new Date(System.currentTimeMillis() - 30000L); Date now = new Date(); System.out.println(before); System.out.println(now); List live = liveBaseballScoreRepository.findByLatestUpdateBetween(before, now); spring data jpa 메소드 쿼리로 date between만들기 2.between과 and사용법 어제 00:00:00부터 오늘 23:59:59초까지 24:00..
Spring Data Jpa Native Query 사용법 Spring Data Jpa Native Query 사용법 기존 mybatis등 orm프레임웍 말고 다른 db프레임웍을 쓰다가 jpa로 바꾸려고 할 때 jpa만으로 해결이 잘 안되는 상황이 있습니다. 그럴때는 native query를 써야할 상황이 있는데 아래와 같이 사용하면 됩니다. Repository Interface에서 선언 @Query(value = "select * from table_name where case_1=:case_1 and date='2017-04-04' ", nativeQuery=true) List findSomeCase(@Param("case_1") String case_1); end.