일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- Java
- vm
- 백엔드
- 웹 서버
- spring batch
- CS
- 데이터베이스
- 영속성 컨텍스트
- computer science
- Container
- ORM
- 가상화
- 배포
- mysql
- 컨테이너
- JPA
- 스프링 부트
- HTTP
- 스프링 시큐리티
- 스프링 배치
- 스프링
- Spring
- CI/CD
- Spring Security
- spring boot
- 자바
- web server
- spring cloud
- virtualization
- Today
- Total
목록분류 전체보기 (141)
개발 일기

인증 (Authentication) 인증은 사용자가 특정 서비스에 접근하려고 할 때, 해당 사용자가 누구인지 확인하는 과정이다. 이를 위해 사용자는 일반적으로 식별 가능한 정보를 제공해야 한다. 이 과정은 서비스의 서버가 해당 사용자가 서비스에 등록되어 있는지 확인하고, 제공된 정보가 올바른지 검증하는 과정을 포함한다.간단한 예시로, 어떤 웹사이트에 로그인하여 글을 작성하려면 사용자는 해당 웹사이트에 등록된 회원이어야 한다. 사용자가 로그인 페이지로 이동하고, 등록된 아이디와 비밀번호를 입력하면, 웹사이트는 해당 정보를 확인하여 사용자를 인증한다. 이때 웹사이트는 입력된 아이디 및 비밀번호가 데이터베이스에 존재하는지 검증한다.따라서 인증은 시스템에 등록된 사용자의 신원을 입증하는 과정으로, 해당 사용자가..

공부하게 된 계기Express에서 Spring Boot 프레임워크를 공부하게 되면서 Spring Boot에서는 Spring Security와 JWT로 회원가입/로그인 기능(인증 및 인가)을 어떻게 구현하는지 알고 싶어서 조사를 하다가 내가 직접 구현했던 방식과 완전히 다른 구현 방식을 발견했다. 이때 그 구현 방식을 채택하신 분은 왜 그런 방식으로 구현했는지 근거가 다 있는 것을 보고 그 근거 중에 이러한 공격들에 대한 이유도 포함됐는데 구체적으로 알아볼 필요가 있을 것 같고 앞으로 제가 Spring Security와 JWT로 인증 및 인가를 구현하는 다양한 방식 중 하나를 채택할 때 근거를 채택할 때 도움이 될 것 같아서 공부하게 됐다. XSS(Cross-site Scripting) 공격웹 해킹..

경로 표현식 .(점) 을 통해 객체 그래프를 탐색하는 것으로 상태 필드(state field) : 단순히 값을 저장하기 위한 필드 (ex: m.username) 경로 탐색의 끝으로 더이상 탐색 불가하다. 연관 필드(association field) : 연관관계를 위한 필드 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) 묵시적 내부 조인(inner join) 발생, 탐색O 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 묵시적 내부 조인 발생, 탐색X -> 결과가 컬렉션이기 때문에 속성 값에 접근할 수 없다. 묵시적 조인은 실무(큰 프로젝트)에서는 사용을 지양해야한다. 튜닝하기 엄청 어려워진다..

JPA는 JPQL, JPA Criteria, QueryDSL, 네이티브 SQL, JDBC API 등 다양한 쿼리를 지원한다. 그 중 JPQL에 대해 알아보자 JPQL(Java Persistence Query Language) JPA를 사용하면 엔티티 객체를 중심으로 개발하는데 문제는 검색 쿼리이다. 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색하는데 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다. 그래서 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요! JPA는 SQL을 추상화하여 엔티티 객체를 대상으로 검색하는 JPQL이라는 객체 지향 쿼리 언어 제공 이때 SQL을 추상화한 것이기 때문에 특정 데이터베이스 SQL에 의존하 지 않는다...

기본값 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능하다. ex) 회원 엔티티의 키, 나이 값이 변경 되도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 - 자바 기본 타입(int, double) - primitive type - 래퍼 클래스(Integer, Long) - String 생명 주기를 엔티티에 의존, ex) 회원 삭제 시 이름, 나이 등 필드들 함께 삭제 값 타입은 공유하면 X, ex) 회원 이름 변경 시 다른 회원의 이름도 함께 변경되..

프록시 프록시를 이해하고 아래의 즉시로딩 지연로딩에 대해서 이해할 수 있다. 우선 왜 프록시가 쓰이는가? Member를 조회할 때 Team도 함께 조회해야 하는가? // 1. 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } // 2. 회원만 출력 public void printUserAndTeam(String memberId) ..

상속관계 매핑 객체 상으로는 상속 관계가 존재한다. 그러나 관계형 데이터베이스는 상속 관계가 없다! 그나마 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 = `객체의 상속과 구조`와 `DB의 슈퍼타입 서브타입` 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 1. 각각테이블로변환 -> 조인전략 만약 그냥 객체만 고려하여 Item 객체를 만들어 Album, Movie, Book에서 extends Item을 통해 처리해놓고 Item객체에 @Inheritance(strategy = InheritanceType.JOINED)를 걸어주면 아래와 같이 매핑됨. ex) movie의 경우 movie.setDirector/Actor/Name/Price()해주면 ..

연관관계 매핑시 고려사항 3가지 모두 앞서 다룬 내용들이다. 그래도 한번 정리해보자면, 다중성 다대일(@ManyToOne), 일대다(@OneToMany), 일대일(@OneToOne), 다대다(@ManyToMany) 단방향, 양방향 테이블은 외래 키 하나로 양쪽 조인이 가능하여 방향이라는 개념이 없지만 객체는 참조용 필드가 있는 쪽으로만 참조 가능하다. 그래서 한쪽만 참조하면 단방향 양쪽으로 서로 참조하면 양방향이다. 연관관계의 주인 객체 양방향 관계는 참조가 2군데 있어서 둘 중 테이블의 외래키를 관리할 곳을 지정해야하는데 이때 연관관계의 주인은 외래 키를 관리(등록 및 조회 등)하는 참조가 되고 주인의 반대편은 외래 키에 영향을 주지 않고 단순 조회만 가능하다. 다대일 [N:1] 다대일 단방향 앞서 다..