[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..
git & github - Github Actions
·
git & github
□ Github Actionsgithub에 내장된 CI/CD 도구 Github Actions의 CItest를 통과한 코드만 develop 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견Github Actions의 CDmain브랜치에 코드가 통합된 경우 운영 환경에 빠르게 배포할 수 있게 함 Workflow최상위 개념여러 Job으로 구성되고, Event에 의해 트리거될 수 있는 자동화된 프로세스Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장됨eventGithub Repository에서 발생하는 push, pull request open, issue open, 특정 ..
[TIL](2024)09.30 ~ 10.04
·
Java & Spring/TIL
09월 30일 (월)- 오늘 한 일2차 기술면접 준비Docker 학습10월 01일 (화)- 오늘 한 일프로그래머스 코딩테스트 1문제 진행 및 회고 GithubActions / CloudType를 통한 CI/CD 실습10월 02일 (수)- 오늘 한 일JPQL 학습 및 실습개인과제 진행10월 04일 (금)- 오늘 한 일QueryDls 학습 및 실습개인과제 진행
Docker란 무엇인가?
·
Docker
□ CI / CD에 대해CI : Continuous Integration의 약자로 지속적인 통합을 의미각 개발자들이 github등의 관리시스템에 코드를 통합통합된 코드를 빌드 및 테스트 진행버그 발생 시 버그를 해결→ 빌드 및 테스트를 사람이 매번 할 필요없이 프로그램이 실행하고, 발생한 버그를 사람이 수정CD : Continuous Deployment(Delivery)의 약자로 지속적인 제공을 의미기본 개념지속적인 통합자동화된 빌드와 자동화된 테스트를 제공안정적인 코드를 빠르게 제공할 수 있는 밑거름지속적인 서비스 제공지속적인 베포베포를 자동화하여 베포 시간을 단축하고 코드 결과물을 빠르게 지속적으로 제공단계코드 작성 : 개발자들은 소스 코드를 작성하고 저장소에 업로드빌드 : 저장소에서 최신 소스 코드..
52일차 - 알고리즘 코드카타(실패)
·
Java & Spring/코딩테스트
- 회고84. 괄호 회전하기 : https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public int solution(String s) { int answer = 0; List open = Arrays.asList('(', '{', '['); List close = Arrays.asList(')', '}', ']'); // s의 길..
기술면접 준비(2)
·
이론공부
1. JPA에서 Lazy Loading과 Eager Loading의 차이점과 각각의 장단점Lazy Loading (지연 로딩): 연관된 엔티티나 컬렉션을 실제로 사용할 때 로드합니다. 즉, 객체를 처음 불러올 때는 연관된 엔티티를 로드하지 않고 필요할 때 데이터를 가져옵니다.장점:처음 데이터 로드 시 불필요한 데이터를 가져오지 않으므로 성능 최적화에 유리함.메모리 사용량을 줄일 수 있음.단점:필요한 시점에 데이터베이스에 추가 쿼리를 실행하기 때문에 성능 문제가 발생할 수 있음 (특히 N+1 문제).즉시 데이터를 사용해야 하는 경우 사용하기 어려움.Eager Loading (즉시 로딩): 엔티티를 조회할 때 연관된 모든 엔티티를 함께 조회합니다.장점:처음 로드 시 관련된 모든 데이터를 한 번에 가져오기 때..
JPA - 쿼리 파일 만들기
·
Java & Spring/Spring
□ 쿼리 파일 만들기(QuaryMapper)- MyBatisRowMapper가 가지고있는 단점인 "반복되는 코드"를 줄이고 "함께있는 프로그램 코드와 쿼리 코드를 분리하여 관리"하고 싶은 니즈를 반영하여 탄생반복적인 JDBC 프로그래밍을 단순화SQL 쿼리들을 XML파일에 작성하여 코드와 SQL을 분리JDBC로 처리하는 코드의 설정(Connetcion)부분을 줄이고 실제 SQL문에 연결함으로서 빠른 개발이 가능하게 한다(SQL Mapper 특징)MyBatis 코드는 map 인터페이스와 SQL 쿼리와 ResultSet 매핑을 위한 xml 및 annotation을 사용한다.객체 자체보다 쿼리에 집중할 수 있다.SqlSesstion Factory Builder (1), (2), (3)MyBatis 설정 파일을 ..