일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Postman
- mappedby
- 매개변수 배열
- JPA
- JPQL
- Spring Security
- N+1
- pageable
- 문자열 대문자
- 배열 리턴
- 문자열 분리 공백
- 배열 길이
- 문자열 추가
- 문자열 요소
- 타입 변환 string
- 문자열 소문자
- 배열 크기순
- ? 연산자
- 문자열 숫자
- 토큰 자동입력
- @Transactional
- 문자열 숫자로
- 숫자를 문자로
- 문자열 알파벳
- 배열
- aop
- 배열 정렬
- 배열 요소추가
- 문자 숫자로 변환
- list 최대 최소
- Today
- Total
목록Backend/Spring Framework (9)
D.DevLog

코드 개선, 성능 최적화를 위한 개인 프로젝트 (1) 목표 : 짜여져 있는 코드를 개선시키기 Lv1 -1. @Transactional 의 이해 @Transactional 트랜잭션에 대한 전파, 격리, 시간 초과, 읽기 전용 및 롤백 조건 설정하고 트랜잭션 관리자를 지정하는 어노테이션++) 트랜잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 Q ) 클래스, 메서드 둘다에 붙일 수 있는지?A ) 가능 Lv1-2. JWT 의 이해 생각 흐름 ) 사용자 정보 -> 로그인 부분과 관련1. JWT 에 어떤 항목이 들어가 있는지 확인2. User table 확인3. JWT 발급시 발급되는 토큰을 건드려야 함 JWT 토큰 관련 정리 링크 추가 필요 - 내 글 Lv1-3. JPA 의 이해..

AOP 란?: 관점 지향 프로그래밍: 핵심 기능과 부가 기능을 분리해 모듈화 하고, 프록시(proxy) 패턴을 통해 이러한 부가 기능을 핵심 로직에 적용하는 방식 ⭐ AOP 왜 사용하는지?: 가독성 증가, 코드의 복잡성 쉽게 줄여주기 위해프로젝트 내에서 각 도메인 마다 공통으로 특별한 기능 추가 하고 싶을때! ( 권한 검증, 메서드 별 성능 측정, 변경 히스토리 남기는 기능 등)부가적인 관심사의 분리유지 보수성 향상코드 재사용성 증가 ⭐ 활용 예시트랜잭션 관리로깅보안 / 권한 확인성능 모니터링 ⭐ 사용법@Aspect: Aop 정의할 클래스에 붙여줘야 함 @Aspect@Componentpublic class AOP_정의한_클래스 { @ Pointcut: Aop 적용할 메서드를 정의하는 표현식- 어떤 ..

Spring Security 란?웹 애플리케이션의 인증, 인가 기능을 제공하는 framework spring security 사용시 변하는 것: filter 와 Argument Resolver 의 기능을 Spring security 가 함 - 모든 요청이 기본적으로 차단됨 (url 접근)- 기본 로그인 화면 생김- 인증 되지 않은 사용자에게 403 forbidden 오류 던짐- BCrypt 등 암호화 기본 제공- CSRF 보호 자동으로 활성화cf) CSRF 란? 타인이 사용자의 권한을 도용해 특정 기능 사용하는 것 인증 & 인가 개념인증 (Authentication) : 사용자의 신원 확인_ 누구인지 인가 (Authorisation) : 권한 부여_ 뭐 할 수 있는지 => 요청이 들어왔을때, ..
JPARepository 사용 방법 클래스 생성public interface UserRepository extends JpaRepository{ // } 쿼리 사용법// 기본List findByNameAndPassword(String name, String password);// distinct (중복제거)List findDistinctUserByNameOrPassword(String name, String password);List findUserDistinctByNameOrPassword(String name, String password);// ignoring case (대소문자 무시)List findByNameIgnoreCase(String name);List findByNameAndPassw..

테이블 객체끼리 관계 만들기엔티티 간의 관계 (일대일, 일대다, 다대다) 를 정의하고 매핑하는 방법 @OneToOne (1 : 1)주의 ) 하나의 목적에 부합되는 공통된 데이터를 관리한다고 볼 수 있어 1:1 관계를 지정하기에 앞서 이것이 꼭 물리적으로 테이블이 분리되어야하는지에 대해 생각해 봐야함 @OneToMany (1:N)특징 )속도를 위해 기본적으로 FetchType 설정이 LAZY 로 되어있음 (속성mappedBy : 연관관계의 주인 필드를 선택fetch : 글로벌 페치 전략 설정cascade : 영속성 전이 기능 사용targetEntity : 연관된 엔티티 타입 정보 설정 '1' 인 엔티티에 '다' 관계의 엔티티를 매칭할때 사용@Entity(name = "parent")public clas..

데이터베이스 생성 (H2) ⭐ Server Mode직접 엔진을 설치해서 사용하는 방식 (실행 주체 : 외부)어플리케이션과 상관 없는 외부에서 DB 엔진이 구동데이터를 어플리케이션 외부(로컬)에 저장-> 어플리케이션을 종료해도 데이터가 남아있음배포 용도여러 어플리케이션에서 동일한 DB 사용하기 적합 ⭐ In-memory Mode엔진을 설치하지 않고 어플리케이션 내부의 엔진을 사용하는 방식 (실행 주체 : 스프링)(build.gradle 및 application.properties 설정을 통해 실행 가능)어플리케이션을 실행하면 DB 엔진이 함께 실행되고 어플리케이션을 종료하면 DB 엔진이 함께 종료됨데이터를 어플리케이션의 메모리에 저장 -> 어플리케이션 종료시 데이터 사라짐테스트 용도# applica..
의존성이란?1. compile 시점의 의존성 : 프로젝트를 컴파일 할 때 마다 사용됨= 해당 라이브러리의 API를 사용할 수 있음2. runtime 시점의 의존성 : 어플리케이션을 실행할 때 사용됨 = 실행 시에도 라이브러리가 필요함3. 은닉성 : implementation 으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근 불가능. 모듈간의 캡슐화 도와줌 의존성 옵션 (build.gradle > dependencies)implementation 옵션직접적인 의존성을 추가할 때 사용특정 라이브러리나 모듈이 프로젝트 컴파일 시 필요하지만, 해당 라이브러리가 프로젝트 외부로 공개될 필요가 없다는 것을 의미runtimeOnly 옵션compile 시점에는 필요없고 runtime 시점에만 필요한 라이브러리를 ..
JPA : Java의 ORM 기술 표준 (인터페이스)- 대표적인 구현체로 Hibernate를 주로 사용 ORM(Object-Relational Mapping) : 객체와 관계형 DB를 자동으로 매핑하여 패러다임 불일치 문제를 해결 [ 사용법 ]저장 코드jpa.persist(tutor);저장 JPAinsert into person ..., insert into tutor ...조회 코드Tutor tutor = jpa.find(Tutor.class, tutorId);조회 JPAselect * from tutor t join company c on t.company_id = c.id // 생성jpa.persist(tutor);// 조회Tutor tutor = jpa.find(Tutor.class, tutorI..