Java (47) 썸네일형 리스트형 논리적모델링,물리적 모델링 3. 논리적 모델링 논리적 모델링: ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정 4. 물리적 모델링 물리적 모델링: 관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정 개념적 모델링 개념적 모델링: 개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정이다. ER모델: 세상의 모든 사물을 개체(Entity)와 개체 간의 관계(Relationship)으로 표현한다. 인데 용어로만 보니 역시 이해하기 힘들다. 그림으로 나타내보자면 이렇게 그릴수 있다. 또한 새발 표기법이라는 것이 있는데, 관계의 의미나 제약조건 등을 개체 타입들을 연결하는 실선 위에 몇 가지 기호를 사용하여 표현하는 표기법이다. 이 방법을 내가 과제로 진행했던 프로젝트에 적용해서 그려보면 이렇게 나온다. User개체는 Post와 Comment개체에 반드시 존재해야하지만, User개체는 Post개체와 Comment개체를 한개 가지거나, 여러개 가지거나, 가지지 않더라도 존재한다. 즉, 1:0 or 1:1 or 1:N관계.. 숙련주차 개인과제 - API명세서 기능 API URL Method Request Header Request Response Response Header 게시글 작성 /api/post POST Authorization : Bearer ..무작위 생성 { "title":"제목", "contents":"내용" } { "title":"제목", "contents":"내용" } 게시글 목록 조회 /api/posts GET { List:[ "username":"이름", "title":"제목", "contents":"내용", "createdAt":"생성 일자" ... ... ] } 게시글 상세 조회 /api/post/{id} GET { "username":"이름", "title":"제목", "contents":"내용", "createdAt":"생성 일.. JWT JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다. 즉 토큰의 한 종류이다. 보통 쿠키 저장소에 담긴다. JWT의 사용 이유 1.서버가 1대인 경우 Session1 이 모든 Client 의 로그인 정보 소유 2.서버가 2대 이상인 경우 서버의 대용량 트래픽 처리를 위해 서버 2대 이상 운영 필요 Session 마다 다른 Client 로그인 정보를 가지고 있을 수 있음 Session1: Client1, Client2, Client3 Session2: Client4 Session3: Client5, Client6 Client 1 로그인 정보를 가지고 있지 않은 Sever2 나 Server3 에 API 요청을 하게되면 어떻하지?.. 인증과 인가 스프링에서 “인증”과 “인가”를 관리해주는 것 = 스프링 시큐리티 인증(Authentication)은 해당 유저가 실제 유저인지 인증하는 개념이다. ex) 휴대폰 지문인식, 사이트 로그인 인가(Authorization)는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다. ex)관리자 페이지에는 관리자만 접근할 수 있다. 웹 어플리케이션의 인증 1.쿠키-세션 방식의 인증 쿠키-세션 방식은 서버가 특정 유저가 로그인 되었다는 상태를 저장하는 방식이다. 인증과 관련된 아주 약간의 정보만 서버가 가지고 있게 되고 유저의 이전 상태의 전부는 아니더라도 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념이다. 사용자가 로그인 요청을 보낸다. 서버는 DB의 유저 테이블에서 아이디와 .. 의존성 주입 - 스프링 IoC컨테이너 의존성 주입을 사용하기 위해서는 객체 생성이 우선 되어야 한다. 이때, 스프링 프레임워크는 필요한 객체를 생성하여 관리하는 역할을 대신 해준다. 빈 (Bean): 스프링이 관리하는 객체 스프링 IoC 컨테이너: '빈'을 모아둔 통 '빈' 등록 방법 이전 글(https://move22.tistory.com/148)에서 쓴 Water와 Cup을 예시로 쓰자면 다음과 같다. 1.@Component @Component public class Water {} 스프링 서버가 실행될 때 스프링 IoC 에 '빈'을 저장해 준다. 1-1. 스프링이 @Component 객체에 대해서 하는 일 // 1. Water 객체 생성 Water water = new Water(); // 2. 스프링 IoC 컨테이너에 빈 (water.. 의존성 주입 - 강한결합 Spring의 의존성 주입이란 스프링 컨테이너가 객체간에 의존성을 부여하는것을 의미한다. DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부른다. 강한결합 의존성 주입이 되지 않은 '강한 결합'의 예시와 문제는 다음과 같다. 1.컵에 물이 담긴다는 의미로 객체 'Cup'과 'Water'를 생성하여 사용한다. Water.java public class Water{ ... } Cup.java public class Cup{ private final Water water; public Cup() { this.water = new Water(); } } 이때, Cup에는 새로 water을 생성하여 사용해주었다. 2.Water객체에 식용인지 아닌지 구분하기 위해서 생성자에 di.. 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장 하는 환경 이라는 뜻이다. 어플리케이션이 데이터베이스에서 꺼내온 데이터 객체를 보관하는 역할을 한다. 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리한다. 영속성 컨텍스트 = 엔티티 매니저마다 가지고 있는 어떠한 공간 영속화 한다 = 엔티티 매니저가 자기의 영속성 컨텍스트에 넣어준다 JPA 엔티티의 상태 비영속(New) : 영속성 컨택스트와 관계가 없는 새로운 상태이다. 해당 객체의 데이터는 실제 DB의 데이터와는 관련없고, 그냥 Java 객체인 상태다. 영속(Managed) : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태이다. 이와 같은 경우 데이터의 생성, 변경등을 JPA가 추적하면서 필요.. 인터페이스 추상클래스와 인터페이스 언제 사용하나? 추상클래스 여러개의 가까운 클래스들 사이에 동일한 코드를 나누어서 사용하고 싶을때. 추상클래스를 상속한 클래스들이 많은 공통 메소드들과 필드와 public 보다 다양한 접근 제어자에 의해 사용하고 싶을때. non-static 과 non-final 필드를 선언하고 싶을때. 결과적으로 객체들의 상태를 메소드에서 접근하고 수정 할 수 있게 되겠지. 인터페이스 크게 상관없는 클래스들이 너의 인터페이스를 구현해야 할 필요가 있을때. 예를들어 Comparable and Cloneable 특정 데이터타입의 행위를 특별하게 구현하길 원할때 그러나 누가 그것의 행위를 구현 했는지에 대한 관심은 없을때 다중 구현상속의 이점을 누려야 할때 상속 또는 인터페이스의 자동 타입 변환(Pro.. JVM (1) 1.JDK 자바 가상 머신(Java Virture Machine)에 대해서 설명하기전에 JDK에 대해서 알고 가야한다. JDK는 Java Development Tool + JRE이다. 자바 개발자용 도구들과 JRE를 포함하고 있다. JRE는 Java Runtime Environment + JVM 이다. JRE에는 다음과 같이 자바에서 제공되는 기본 라이브러리들이 포함된다. JVM은 JRE에 속해있다. 2.JVM 2-1. 자바에서 코드의 실행 코드가 실행될때, JVM은 다음의 그림과 같은 역할을 한다. 2-2. JVM의 구조 클래스 로더 서브시스템 .class 에서 바이트코드를 읽고 메모리에 저장. 메모리 메소드 영역(Method Area). 힙 영역에는 객체를 저장. 스택 영역에는 스레드마다 런타임 스택.. 이전 1 2 3 4 5 다음