| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 디자인 패턴
- LV01
- Kafka
- 프로그래머스
- jvm
- Lv.0
- GIT
- 코테
- mysql
- CoffiesVol.02
- LV03
- Java
- LV0
- docker
- 데이터 베이스
- LV.02
- JPA
- Redis
- S3
- 일정관리프로젝트
- 이것이 자바다
- SQL
- 알고리즘
- 연습문제
- spring boot
- Join
- CI/CD
- 포트폴리오
- LV02
- 일정관리 프로젝트
- Today
- Total
목록2024/05 (20)
코드 저장소.
목차1.문제상황 2.동시성 이슈?3.비관적 락 VS 낙관적 락 4.프로젝트 적용1.문제상황 프로젝트를 진행하면서 게시글 조회수 증가기능을 확인해보는 도중에 포스트맨으로 동시요청을 해보았는데 조회수의 결과가 원하는 만큼 증가하지 않는 문제가 발생을 해서 무슨 문제인지를 검색해 보았더니 동시성이슈에 관련된 문제임을 알았고 앞으로도 필요한 문제이기에 이 문제를 해결해 보기로 했다.2.동시성 이슈?동시성이라는것은 두개 이상의 세션이 공통된 자원에 대해서 읽고 쓰는 작업을 할 때 발생하는 문제를 동시성 이슈라고 합니다. 3.비관적 락 VS 낙관적 락데이터베이스는 여러 사용자들이 같은 데이터를 동시에 접근 상황에서, 데이터의 무결성, 일관성을 지키기 위해 LOCK을 사용한다. Lock은 트랜잭션의 순차성을 보장하며..
목차1.QueryDSL? 2.JPQL과의 차이점?3.프로젝트의 적용 1.QueryDSL?QueryDSL은 자바 기반의 동적 쿼리를 작성하는 데 사용되는 라이브러리입니다. 주로 JPA(Java Persistence API)와 함께 사용되며, 데이터베이스에 대한 쿼리를 자바 코드로 작성할 수 있도록 도와주는 라이브러리 입니다. 2.JPQL과의 차이점?QueryDSL과 JPQL(JPA Query Language)은 둘 다 자바 표준인 JPA(Java Persistence API)를 사용하여 데이터베이스 쿼리를 작성하는 데에 사용되는 라이브러리입니다. 하지만 두 라이브러리 간에는 몇 가지 차이가 있습니다. 2-1.문법 및 표현 방법JPQL: 문자열 기반의 쿼리 언어로, SQL과 유사하지만 엔터티와 필드를 대상으..
목차1.캐시는 무엇인가?2.왜 캐시를 사용했는가?3.프로젝트 적용 1.캐시는 무엇인가?캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 데이터를 미리 복사를 해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다.2.왜 캐시를 사용했는가?프로젝트를 진행하다보니 메인페이지에서 있는 카테고리나 로그인 공지사항 글 등 빈번하게 접근하면서 데이터 갱신이 잘 되지 않은 부분이 있는데 매번 페이지로 이동을 할 때마다 반복적으로 쿼리가 작동이 되면 디비에 부담이 가기 때문에 반복적인 쿼리를 줄이는 방법으로 캐시를 선택하게 되었다. 2-1.LocalCac..
목차1.Jwt를 프로젝트에 적용한 이유2.프로젝트에서 사용된 인증 로직3.구현 결과물 1.Jwt를 프로젝트에 적용한 이유Jwt로그인을 프로젝트에 적용을 하게된 이유는 크게 다음과 같다.Jwt방식을 사용하면 서버는 비밀키만 알고 있으면 되기 때문에 세션 방식과 같이 별도의 인증 저장소가 필요하지 않으므로 서버의 부담이 감소무상태 인증, 간편한 클라이언트-서버 분리, 분산 시스템으로 확장 가능성 등의 장점위와 같은 이유로 Jwt를 적용하고자 한다. 2.프로젝트에서 사용된 인증 로직보통 jwt로그인에서 사용되는 재발급의 로직은 로그인시 발급되는 accessToken의 유효기간이 만료가 되면 서버에서 만료가 된지 확인을 한 뒤에 refreshToken을 활용해서 accessToken을 재발급하는 방법이다. ..
목차1.프록시2.로딩전략 1.프록시JPA에서의 프록시는 엔티티의 지연 로딩(Lazy Loading)을 지원하기 위해 사용됩니다. JPA 구현체(예: Hibernate)는 엔티티 대신 프록시 객체를 반환하여 실제 데이터베이스 액세스를 지연할 수 있습니다. 프록시 객체는 실제 엔티티의 서브 클래스 또는 동적 프록시로서, 엔티티의 실제 데이터가 필요한 시점까지 데이터베이스 쿼리를 연기합니다. 프록시의 동작 원리지연 로딩 설정: 엔티티 관계(예: @OneToMany, @ManyToOne)에 fetch = FetchType.LAZY를 설정합니다.프록시 생성: JPA 구현체는 엔티티를 로드할 때 실제 엔티티 대신 프록시 객체를 반환합니다. 초기화: 프록시 객체의 메서드가 호출되면, JPA 구현체는 실제 엔티티 데이..
목차1.JPA의 데이터 타입2.기본값 타입3.임베디드 타입4.컬렉션 값 타입 1.JPA의 데이터 타입JPA에서의 데이터 타입은 크게 엔티티타입과 값 타입으로 되어있습니다. 엔티티 타입 엔티티 타입은 @Entity로 정의를 할 수 있는 객체를 의미합니다. 값타입 값타입은 크게 3가지로 분류를 할 수 있습니다. 1.기본 값 2.임베디드 타입3.컬렉션 타입2.기본값 타입기본 값 타입은 자바에서 기본 타입, 래퍼 클래스, String을 예로 들 수 있습니다.@Entity@Getter@NoArgsConstructor@AllArgsConstructorpublic class testEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ..