자세한 건 Github를 참고해주시기 바랍니다. 배경 개인 프로젝트를 진행하면서 redis를 인증번호 저장을 목적으로 개발을 하고 테스트 하던 과정에서 저장이 되더라도 get을 하지 않는 이슈가 발생하였습니다. 이를 트러블 슈팅하기 위해서 포스팅을 하게 되었습니다. 원인 @Transactional fun authorizePhoneNumber(phoneNumber: String, authNumber: Int): Boolean { val secureNumber = authNumberRepository.findByIdOrNull(phoneNumber.substring(4)) ?: throw SecureNumberNotFoundException(phoneNumber) return secureNumber.toIn..
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..
OneToOne은 기본적으로 Lazy 로딩을 지원하지 않는다. 그렇기 때문에 조회 시 Lazy로 설정 시 다음과 같은 문제가 발생한다. 일단 사전에 코드를 보여주면 다음과 같다. Member.java public class Member extends BaseTimeEntity { // 속성 ... // @OneToOne(mappedBy = "member", cascade = {CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval = true) private MemberCount memberCount; // == 연관관계 로직 == // public void addMemberCount(final MemberCount memberCount) { this.memb..
본 필자는 회사에서 일하면서 고객의 정보를 변경하면 수정 이력을 나타내는 기능과 수정 했던 사람을 추적해야 하는 기능을 구현해야 했다. 기존에는 직접 업데이트가 될 때 마다 전 후 비교를 통해 시간을 업데이트 시키는 방식으로 복잡하게 비즈니스 로직이 수행되었는데 필자는 이걸 좀 더 수월하게 이용하기 위해서 JPA Auditing 기술을 이용하고자 했다. JPA Auditing 이란? 데이터베이스에서 누가 수정하고 언제 수정되었냐는 기록은 매우 중요할 수 있는 데이터이다. JPA에서는 이러한 기능을 추적할 수 있는 기능을 제공하고 있는데 그것이 바로 JPA Auditing 기술이다. 이 기술을 사용하면 자동으로 JPA에서 자동으로 생성이나 수정 발생 시 시간을 매핑하여 데이터베이스에 넣어준다. 사용해보자!..
백엔드 서버에서는 JSON을 통해 클라이언트와 통신한다. 그렇다면 자바는 어떻게 객체의 데이터를 JSON 데이터로 바꿀 수 있을까? 어늘은 그 방법인 직렬화에 대해 알아볼 것이다. 그리고 그걸 역직렬화를 통해 자바 객체로 받아올 수 도 있습니다. 직렬화 / 역직렬화 자바 직렬화란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터 변환하는 것을 말한다. 시스템 적으로는 JVM의 메모리에 힙 또는 스택에 존재하는 객체 데이터를 바이트 형태로 변환하여 직렬화 한다. 자바에서는 Serializable 인터페이스를 통해 직렬화를 하고 있다. 반대로 직렬화는 역으로 바이트 형태의 데이터를 객체 또는 자바 시스템의 데이터로 바꿔주는 것을 말한다. 마찬가..
저번에는 성능 향상과 Stream에 동작 순서에 대해 알아보았다면 이제는 Optional에 대해 알아보자 Stream은 지연 처리를 통해 연산을 하여 값을 도출해낸다. 그렇다면 정확한 이유와 흐름에 대해 파악해보자 Stream 지연 처리 예제 코드를 먼저 살펴보자 public class StreamLazyCal { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; int sum = Arrays.stream(arr) .filter(n -> n % 2 == 1) .sum(); System.out.println(sum); } } 이 예제 코드는 배열을 filter를 통해 홀수만 걸러내어 그 합을 출력하는 코드이다. Strea..
- Total
- Today
- Yesterday
- JPA
- MySQL
- 인터뷰
- 동시성
- 게시판
- thread
- docker
- 코드
- 면접 준비
- 면접
- IT
- 코딩
- 개발
- DB
- CS
- Spring
- 백엔드
- Kotlin
- 개발자
- 취업준비
- 취준
- 프로그래밍
- DevOps
- java
- Redis
- swarm
- 자바
- 프로젝트
- 취업
- 면접준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |