DB 인덱싱(Database Indexing)
·
이론공부
DB 인덱싱(Database Indexing)은 데이터베이스에서 데이터를 더 빠르게 검색하기 위해 사용하는 기술데이터베이스에서 대량의 데이터를 검색할 때, 인덱스를 사용하면 특정 데이터를 빠르게 찾아낼 수 있어 성능을 크게 향상시킬 수 있다.1. 인덱스의 개념책의 목차와 유사하게, 인덱스는 데이터베이스 테이블의 특정 열(column)에 대한 검색용 정보를 미리 저장해둔 자료 구조인덱스를 사용하면 테이블의 모든 행을 하나씩 탐색하지 않아도 되므로, 검색 속도가 크게 향상된다.2. 인덱스의 작동 방식인덱스는 일반적으로 'B-트리(Balanced Tree)'나 '해시(Hash)'와 같은 자료 구조로 저장인덱스는 특정 열의 값을 기준으로 정렬하여 저장하므로, 데이터 검색 시 이진 탐색(Binary Search)..
csv파일으로 더미데이터 생성하기
·
Java & Spring/Java
- build.gradleimplementation 'com.opencsv:opencsv:5.6' - 전체 코드package com.play.hiclear.domain.gym.service;import com.opencsv.CSVReader;import com.opencsv.exceptions.CsvValidationException;import com.play.hiclear.common.enums.Ranks;import com.play.hiclear.domain.gym.entity.Gym;import com.play.hiclear.domain.gym.enums.GymType;import com.play.hiclear.domain.gym.repository.GymRepository;import com.p..
AWS - S3 이미지 업로드(SpringBoot)
·
AWS
□ 버켓 생성Create Bucket 클릭Bucket Name 작성객체 소유권 설정(ACL) → ACLs enabeld 선택※ ACL(Access Control List) : 접근 제어 목록ACL 을 통해 S3 버킷 및 버킷의 오브젝트에 대한 접근을 관리할 수 있다.버킷과 개별 객체들의 권한은 독립적이다.객체는 객체가 속한 버킷으로부터 권한을 상속받지 않는다.- ACLs disabled : 내가 접속한 계정만 해당 버킷을 소유- ACLs enabled : 다른 AWS계정에서도 소유권을 갖거나 접속제어가 가능Block Public Access새 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단임의의 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스..
[TIL](2024)10.14 ~ 10.18
·
Java & Spring/TIL
WIL회고이번 팀 프로젝트에서 AOP, QueryDsl을 사용해볼수있어서 좋았다.필수 기능 구현 부분이 이전 과제들보다 어려워 도전 기능(AWS, Redis, Docker)등을 사용해보지 못한게 아쉬웠다.10월 14일 (월)- 오늘 한 일팀 프로젝트 시작, 회의 진행ERD 설계API 설계와이어프레임 작성코드 및 Git 컨벤션10월 15일 (화)- 오늘 한 일Card기능 초기 구현팀 프로젝트 1차 병합10월 16일 (수)- 오늘 한 일Card기능 CRUD 구현10월 17일 (목)- 오늘 한 일Card Activity를 AOP를 활용하여 구현Card 조회 QueryDsl을 사용하여 구현10월 18일 (금)- 오늘 한 일최종 병합 및 리펙토링프로젝트 발표 담당
@Transactional(propagation = Propagation.REQUIRES_NEW)
·
Java & Spring/트러블슈팅
주요 특징:새로운 트랜잭션 생성: 메소드가 호출될 때 기존 트랜잭션이 있더라도 그것을 무시하고 항상 새로운 트랜잭션을 생성한다.독립적인 트랜잭션: 이 새로운 트랜잭션은 기존 트랜잭션과 완전히 독립적으로, 새로 시작된 트랜잭션이 커밋되거나 롤백되더라도, 기존 트랜잭션에는 영향을 미치지 않는다.원래 트랜잭션 중단: 새로운 트랜잭션이 끝날 때까지 기존 트랜잭션은 중단된다. 새로운 트랜잭션이 완료된 후에 기존 트랜잭션이 다시 이어진다.부분 커밋: 메소드 실행 중에 새로운 트랜잭션이 성공적으로 커밋되면, 그 결과는 전체 트랜잭션의 성공 여부와 상관없이 데이터베이스에 영구적으로 반영된다. 즉, 새 트랜잭션이 커밋되면 그 변경 사항은 롤백되지 않는다.□ 문제사항 @Transactional public Ma..
MultipleBagFetchException(두개의 Fetch Join)
·
Java & Spring/트러블슈팅
- 문제상황 List results = jpaQueryFactory .selectFrom(todo) .leftJoin(todo.managers).fetchJoin() .leftJoin(todo.comments).fetchJoin() .where(condition) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch();todo조회 시 manager와 comment의 개수를 출력하면서 N+1문제를 해결하기 위해 Fetch Join을 연속으로..
[TIL](2024)10.07 ~ 10.11
·
Java & Spring/TIL
10월 07일 (월)- 오늘 한 일Spring Security 학습 10월 08일 (화)- 오늘 한 일개인과제 진행 QueryDsl작성MultipleBagFetchException 공부10월 10일 (목)- 오늘 한 일개인과제 마무리트랜젝션 전파 학습모의면접 진행10월 11일 (금)- 오늘 한 일AWS강의 수강
Spring - Spring Security
·
Java & Spring/Spring
□ Spring Security란?Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공 □ Spring Security 적용하기1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security'2. FillterConfig -> SecurityConfig로 변경(PasswordEncoder는 Security에 포함되어있어 별도 구현 불필요)코드 보기import lombok.RequiredArgsConstructor;import org.example.statelessspringsecurity.enums.UserRole;import org.springframework.context.annotation.Bean;impor..
JPA - Querydsl 사용법 및 실습
·
Java & Spring/Spring
1. build.gradle 설정dependencies { implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"}// Querydsl 설정부def generated = 'src/main/genera..
JPA - JPQL사용해보기
·
Java & Spring/Spring
JPQL(Java Persistence Query Language) 이란?JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.따라서 테이블을 대상으로 쿼리 하는 것이 아닌 엔티티 객체를 대상으로 쿼리한다. JPQL은 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는 장점이 있다. JPQL은 SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다. - 실습 ◇ Controller @GetMapping("/todos") public ResponseEntity> getTodos( @RequestParam(defaultValue = "1") int page, @R..