목록공부/백엔드 (26)
공hannah부
인증 방식의 종류 Cookie Key-Value 형식의 문자열 클라이언트가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일 동작과정 브라우저(클라이언트)가 서버에 요청(접속)을 보낸다. 서버는 클라이언트의 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담는다. 이후 해당 클라이언트는 요청을 보낼 때마다, 매번 저장된 쿠키를 요청 헤더의 Cookie에 담아 보낸다. Session 비밀번호 등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버 측에 저장하고 관리 동작과정 유저가 웹사이트에서 로그인하면 세션이 서버 메모리(혹은 데이터베이스) 상에 저장된다.이때, 세션을 식별..
Spring Security 스프링 시큐리티란? Spring 기반 어플리케이션의 보안(인증, 권한 부여 및 보호)을 담당하는 스프링 하위 프레임워크 보안용어 정리 인증 (Authentication): 접근하려는 유저가 누구인지 확인하는 절차 ex)로그인 인가 (Authorization): 인증된 사용자에 대해서 권한을 확인하고 허락하는 것 접근 주체 (principal): 보호된 대상에 접근하는 유저, 아이디 비밀번호 (credential): 대상에 접근하는 유저의 비밀번호 스프링 시큐리티 필터 체인 일반적으로 클라이언트에서 서버로 요청을 보내면, 서블릿이 요청을 받아서 처리하고 응답을 클라이언트로 보냄 이 과정 사이에 하나 이상의 필터들을 추가하여 요청이 필터를 거치도록 할 수 있음 필터를 통과하면서 ..

웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청 ↓ 스프링이 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 객체 새로 생성 ↓ 메모리 낭비 ↓ 해당 객체가 1개만 생성되고, 공유하도록 설계 ↓ 싱글톤 패턴 싱글톤 패턴 싱글톤 패턴이란? 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 private 생성자를 사용해 외부에서 new 키워드를 사용하지 못하도록 막아야 한다. 구현 static 영역에 객체 instance를 미리 하나 생성 이 객체 인스턴스가 필요하면 오직 getInstance() 메서드를 통해서만 조회 가능 → 항상 같은 인스턴스 반환 딱 한개의 객체 인스턴스만 존재해야 하므로 생성자를 private으로 막음 package hell..

프록시 프록시 기초 프록시 특징 프록시 클래스는 실제 클래스를 상속 받아서 만들어지므로 실제 클래스와 겉 모양이 같다. 프록시 객체는 실제 객체에 대한 참조를 보관한다. 프록시 객체의 메소드를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 프록시 객체의 초기화 실제 사용될 때 데이터베이스를 조회해서 실제 엔티티 객체를 생성하는 것 초기화 과정 분석 프록시 객체에 member.getName()을 호출해 실제 데이터 조회 프록시 객체는 실제 엔티티가 생성되어 있지 않으면 영속성 컨텍스트에 실제 엔티티 생성을 요청(→ 초기화) 영속성 컨텍스트는 데이터베이스를 조회해서 실제 엔티티 객체 생성 프록시 객체는 생성된 실제 엔티티 객체의 참조를 Member target 멤버 변수에 보관 프록시 객체는 실제 ..

오늘 다룰 내용 상속 관계 매핑 @MappedSuperclass 복합 키와 식별 관계 매핑 조인 테이블 엔티티 하나에 여러 테이블 매핑하기 상속 관계 매핑 조인전략 조인전략이란? 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본키 + 외래키로 사용하는 전략이다. 따라서 조회할 때 조인을 자주 사용한다. 사용시 주의사항 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없기 때문에 타입을 구분하는 컬럼을 추가해야 한다. 장점 테이블이 정규화된다. 외래 키 참조 무결성 제약조건을 활용할 수 있다. 저장공간을 효율적으로 사용한다. 단점 조회할 때 조인이 많이 사용되므로 성능이 저하될 수 있다. 조회 쿼리가 복잡하다. 데이터를 등록할 INSERT SQL을 두번 실행한..

엔티티의 연관관계를 매핑할 때 고려해야 하는 것 다중성 다대일 일대다 일대일 다대다 단방향, 양방향 연관관계의 주인 다대일 - 외래키는 항상 다쪽에 있다. 다대일 단방향 [N:1] 회원 엔티티 @Entity public class Member{ @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; } 팀 엔티티 @Entity public class Team{ @Id @GeneratedValue @Column(name="TEAM_ID") private Long id; private String name..

목표 객체의 참조와 테이블의 외래 키를 매핑하는 것! 핵심 키워드 방향: 단방향, 양방향이 있다 다중성: 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)가 있다. 연관관계의 주인: 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 객체 연관관계 vs 테이블 연관관계 객체는 참조(주소)로 연관관계를 맺는다 테이블은 외래 키로 연관관계를 맺는다 단방향 연관관계 다대일(N:1) 단방향 관계 상황 회원과 팀이 있다 회원은 하나의 팀에만 소속될 수 있다 회원과 팀은 다대일 관계다 객체 연관관계 객체는 참조를 통해 연관관계를 탐색하는데 이를 객체 그래프 탐색이라고 한다. Member member1 = new Member("memeber1","회원1"); Team team1 = ne..

@Entity Entity 속성 적용시 주의사항 기본 생성자 필수 final 클래스, enum, interface, inner 클래스에는 사용 X 저장할 필드에 final 사용 X @Table Table 속성 데이터베이스 스키마 자동 생성 이 속성을 추가하면 애플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다. hibernate.hbm2ddl.auto 속성 DDL 생성기능 스키마 자동 생성하기를 통해 만들어지는 DDL에 제약조건 추가해보기 @Column(name = "NAME", nullable = false, length = 10) nullable속성 값을 false로 지정하면 자동 생성되는 DDL에 not null 제약 조건 추가됨 length 속성 값을 사용하면 자동 생성되는 DDL에 ..