Page 인터페이스 Paging을 위해서 Spring boot에서는 Page 인터페이스를 제공합니다. 이 인터페이스의 기본 스펙을 살펴보면 다음과 같습니다. { "content": [ ... (data) ], "pageable": { "sort": { "unsorted": false, "sorted": true, "empty": false }, "pageNumber": 0, "pageSize": 7, "offset": 0, "paged": true, "unpaged": false }, "last": true, "totalElements": 7, "totalPages": 1, "first": true, "numberOfElements": 7, "size": 7, "sort": { "unsorted": fa..
JPA란? 이 관계를 알아보기 위해 JPA를 쓰는 이유에 대해서 알아봐야합니다. JPA는 ORM 기술 중 하나로 hibernate를 기반으로 자바의 객체와 DB 테이블 간의 패러다임 불일치 문제를 해결해주는 기술입니다. RDB와 Object는 엄연히 다른 존재이지만 이 불일치를 해결하기 위해 여태 많은 개발자들은 RDB 중심의 애플리케이션 개발을 주로 했습니다. 하지만 JPA가 나오면서 부터 이 불일치 문제를 해결하는 장점을 바탕으로 객체 중심의 개발이 이루어지기 시작했는데 이것이 바로 JPA의 장점이라 할 수 있습니다. public class Member { private Long id; private String email; private String password; private String na..
https://golf-dev.tistory.com/33 프로젝트 JPA 성능 개선기 (1) - 로그인 시 성능을 올려보자~! OneToOne은 기본적으로 Lazy 로딩을 지원하지 않는다. 그렇기 때문에 조회 시 Lazy로 설정 시 다음과 같은 문제가 발생한다. 일단 사전에 코드를 보여주면 다음과 같다. Member.java public class Member extends. golf-dev.tistory.com 전 글을 꼭 읽고 오시기 바란다. 이제부터 불필요한 Join문을 없애 보도록 하겠다. 추가 된 기술 스택 : QueryDSL QueryDSL은 Projections를 통해 DTO나 다른 객체에 접근하여 그에 필요한 데이터만을 조회하여 반환할 수 있다. 이 방법을 통해 우린 영속화된 Entity에..
Redis를 사용하던 와중 특정 오류가 잡혀 골치 아픈 적이 있었다. public class CacheConfig { private final RedisConnectionFactory redisConnectionFactory; @Bean public CacheManager cacheManager() { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) .serializeValuesWith(Redi..
본 필자는 회사에서 일하면서 고객의 정보를 변경하면 수정 이력을 나타내는 기능과 수정 했던 사람을 추적해야 하는 기능을 구현해야 했다. 기존에는 직접 업데이트가 될 때 마다 전 후 비교를 통해 시간을 업데이트 시키는 방식으로 복잡하게 비즈니스 로직이 수행되었는데 필자는 이걸 좀 더 수월하게 이용하기 위해서 JPA Auditing 기술을 이용하고자 했다. JPA Auditing 이란? 데이터베이스에서 누가 수정하고 언제 수정되었냐는 기록은 매우 중요할 수 있는 데이터이다. JPA에서는 이러한 기능을 추적할 수 있는 기능을 제공하고 있는데 그것이 바로 JPA Auditing 기술이다. 이 기술을 사용하면 자동으로 JPA에서 자동으로 생성이나 수정 발생 시 시간을 매핑하여 데이터베이스에 넣어준다. 사용해보자!..
@Test @DisplayName("데이터베이스에 존재하는 게시판을 10개 조회해온다.") void findAll() { for (int i = 0; i < 10; i++) { Board board = Board.builder() .title(Title.from("테스트 용입니다. " + i)) .content(Content.from("테스트용 Content 입니다. 재미있다아앙")) .build(); boardService.create(board, 1L); } Pageable pageable = PageRequest.of(0, 10, Sort.Direction.DESC, "id"); List boards = boardService.findAll(pageable); assertThat(boards.siz..
Spring boot를 처음 설정해놓으면 Application 클래스에 @SpringBootApplication이라는 어노테이션을 볼 수 있다. 그리고 그 안에는 여러가지 주석이 존재한다. @SpringBootConfiguration과 @EnableAutoConfiguration 그리고 @ComponentScan이 존재한다. @EnableAutoConfiguration 이 주석은 AutoConfiguration을 쓰겠다는 것을 의미한다. AutoConfiguration은 해석하면 자동 설정이라는 뜻으로 다음과 같은 Spring.factory에 저장되어 있는 정보들을 가지고 자동으로 스프링 빈으로 등록해준다. 그렇기 때문에 우린 별다른 설정 없이 스프링을 자유롭게 사용할 수 있다. 생각을 해보면 Sprin..
현대 개발자들은 Swagger나 Spring docs를 사용해 RestFul API를 문서화 한다. 그렇다면 왜 문서화를 할까? API 문서화가 필요한 경우 혼자 개발하는 경우엔 필요없는 기능일지도 모르지만, 같이 개발한다고 가정해보자 프론트엔드 개발자는 RestAPI 호출되는 방식을 알아야 한다. 하지만 문서 없이 말로만 설명 한다면 계속 까먹을 때마다 설명해야하는 번거로움도 존재할 수 있고 의사전달이 잘못될 수도 있는 문제가 발생한다. 어찌보면 이는 당연한 일이다. 누군가와 같이 일을 하는데 문서 없이 그저 말로만 하는 경우는 있을 수 없는 일이다! 그렇다면 대표적인 문서 자동화 도구인 Swagger와 RestDocs에 대해서 살펴보도록 하자 Spring REST Docs Restful 서비스의 문서..
JPA를 왜 사용하는가? 필자는 블로그 프로젝트와 팀원들과 토이 프로젝트를 진행하며 JPA를 사용해 왔다. 과거에 JPA를 사용하면서 "SQL쿼리를 직접 작성하지 않는다"는 이점만 보고 JPA를 무작정 사용했던 것 같았다. 하지만 JPA는 우리가 생각하는 것 만큼 간단하지 않다. 복잡하지 않은 일반 개인 프로젝트에서는 무난히 사용했을 지 몰라도 복잡한 연관 관계를 갖고 있는 테이블이 있다고 가정해보자 우리는 이를 JPA로 간단하게 처리할 수 있는가? 그렇다면 JPA를 왜 사용하는지 JPA를 사용했을 때의 이점을 정확히 파악하고 우리는 그것을 남들에게 설명할 수 있어야 한다. 그 이유에 대해 먼저 알아보자 SQL을 직접 다룰 때 발생하는 문제점 RDBMS는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소..
- Total
- Today
- Yesterday
- thread
- 면접 준비
- 취업준비
- Redis
- 인터뷰
- 프로그래밍
- 면접준비
- 백엔드
- DB
- 개발
- 코딩
- Kotlin
- 프로젝트
- IT
- 자바
- 코드
- 동시성
- 취업
- java
- swarm
- MySQL
- 게시판
- DevOps
- CS
- 취준
- JPA
- 면접
- Spring
- docker
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |