본문 바로가기

728x90

TIL

[Spring][JPA][EntityMapping][JPA 연관 관계] JPA에서 가장 중요한 것은 "객체와 관계형 데이터베이스 테이블이 어떻게 매핑되는지 이해하는 것"이다 엔티티 클래스 간의 관계를 만들어주는 것이 바로 연관 관계 매핑이다. 엔티티 간에 참조할 수 있는 객체의 수에 따라 일대다, 다대일, 다대다, 일대일의 연관 관계로 나눌 수 있다. 연관 관계 정의 규칙 3가지 방향 : 단방향, 양방향 (객체 참조) 연관 관계의 주인 : 양방향, 연관 관계에서 관리 주체 다중성 : 일대다, 다대일, 다대다,일대일 단방향 연관 관계 Member 클래스가 Order 객체를 원소로 포함하고 있는 List 객체를 가지고 있으므로 Order를 참조할 수 있다. 따라서 Member는 Order의 정보를 알 수 있다. 하지만 Order 클래스는 member클래스에 대한 참조 값이 없으.. 더보기
[Spring MVC][Transaction] 학습 목표 트랜잭션(Transaction)이 무엇인지 이해할 수 있다. 두 개의 작업들이 마치 하나의 그룹처럼 묶여서 처리되는 중에 둘 중 하나라도 처리에 실패할 경우 애플리케이션의 신뢰성이 깨지는 상황이 발생한다. 이처럼 트랜잭션은 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위인데, 무조건 여러 개의 작업을 그룹으로 묶는다고 해서 트랜잭션이라고 부를 수 있는 게 아니라 물리적으로는 여러 개의 작업이지만 논리적으로는 마치 하나의 작업으로 인식해서 전부 성공하든지 전부 실패하든지 둘 중 하나로만 처리되어야 트랜잭션의 의미를 가진다. 이러한 All or Nothing이라는 트랜잭션 처리 방식은 애플리케이션에서 사용하는 데이터의 무결성을 보장하는 핵심적인 역할을 한다. ACID원칙 트랜잭션의 .. 더보기
[Spring MVC][DTO] DTO(Data Transfer Object)란? DTO는 주로 클라이언트에서 서버 쪽으로 전송하는 요청 데이터를 전달 받을 때, 서버에서 클라이언트 쪽으로 전송하는 응답 데이터를 전송하기 위한 용도로 사용된다. DTO가 필요한 이유 클라이언트의 Request Body를 하나의 객체로 모두 전달 받을 수 있기때문에 코드 자체가 간결해진다. Request Body의 데이터 유효성(Validation) 검증이 단순해진다. JSON 형식의 Request Body를 전달 받기 위해서는 DTO 객체에 @RequestBody 애너테이션을 붙여야 한다. Response Body를 JSON 형식으로 전달하기 위해서는 @ResponseBody 애너테이션을 메서드 앞에 붙여 주어야하지만 ResponseEntity 객체를 .. 더보기
[Java][Interface] API란 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어에서 제공하는 기능을 제어할 수 있게 하는 인터페이스이다 인터페이스란 사람과사람 , 사람과 사물 또는 기기를 연결하는 것 애플리케이션 간에 지정된 형식으로 요청과 응답을 할 수 있도록 연결하는 것 GUI는 Grapchic User Interface의 약자로 컴퓨터를 사용할 때 입출력 등을 좀 더 효율적이고 쉽게 조작할 수 있도록 아이콘 등으로 시각화한 사용자 인터페이스이다. 예> sourcetree 인터페이스의 기본 구조 인터페이스를 작성하는 것은 기본적으로 클래스를 작성하는 것과 유사하지만, class 키워드 대신 interface키워드를 사용한다는 점에서 차이가 있다. 또한 일반 클래스와 다르게 내부의 모든 필드가 public st.. 더보기
[Spring][JPA][EntityMapping] 학습 목표 JPA 엔티티에 대한 매핑을 할 수 있다. JPA를 이용해서 데이터베이스의 테이블과 상호작용(저장, 수정, 조회, 삭제) 하기 위해 제일 먼저 해야 되는 작업은 바로 데이터베이스의 테이블과 엔티티 클래스 간의 매핑 작업이다. 엔티티 매핑 작업은 크게 객체와 테이블 간의 매핑, 기본키 매핑, 필드와 컬럼 간의 매핑, 엔티티 간의 연관관계 매핑 등으로 나뉜다. 엔티티와 테이블 간의 매핑 @Entitiy 매핑 애너테이션을 이용해 엔티티 클래스와 테이블을 매핑하는것으로 JPA관리 대상 엔티티가 된다. @Table 애너테이션은 테이블의 이름을 설정할 수 있고, 기본값은 클래스 이름을 테이블 이름으로 사용한다, 주로 테이블 이름이 클래스 이름과 달라야할 경우 추가한다. @Table 애너테이션은 옵션이지만.. 더보기
[Spring][JPA][Persistence Context] 학습 목표 JPA가 무엇인지 이해할 수 있다. JPA(Java Peristence API)란 Java에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 명세 이다. 표준 명세라는 의미는 Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다는 것을 의미한다. Hibernate ORM JPA 표준 사양을 구현한 구현체로는 Hibernate ORM, EclipseLink, DataNucleus 등이 있다. Hibernate ORM은 JPA에서 정의해둔 인터페이스를 구현한 구현체로써 JPA에서 지원하는 기능 이외에 Hibernate자체적으로 사용할 수 잇는 API역시 지원하고있다. 데이터 액세스 계층에서의 JPA 위치 데이터 저장, .. 더보기
[SpringMVC][Rest Client] 클라이언트와 서버의 관계 크롬이나 사파리, 익스플로러 같은 웹브라우저는 웹브라우저에서 보이는 HTML 콘텐츠를 웹서버에 요청하고, 웹 서버는 요청에 해당하는 적절한 콘텐츠를 웹브라우저에 응답으로 전달하게 된다 즉 웹브라우저는 웹서버로부터 HTML 컨텐츠를 제공받는 클라이언트가 된다 웹브라우저는 웹서버가 응답으로 전달해주는 HTML컨텐츠를 전달받아서 브라우저 내에 보여준다 여기서 서버 쪽의 콘텐츠 즉, 서버 쪽의 리소스(Resource, 자원)를 이용하는 측이 클라이언트가 된다 서버는 항상 클라이언트에게 리소스를 제공하는 역할만 하는 것이아니라 서버도 다른 서버로부터 리소스를 제공받아야 하는 경우가 많 그런데 프론트의 경우 , 웹브라우저에게는 리소스를 제공하는 입장이니까 서버가 맞지만 Frontend가 B.. 더보기
[SpringMVC][HTTP헤더] HTTP헤더란? HTTP헤더는 HTTP메세지의 구성 요소중 하나로써 클라이언트의 요청이나 서버의 응답에 포함되어 부가적인 정보를 HTTP메세지에 포함할 수 있도록 해준다. 개발자들이 직접 실무에서 사용하는 대표적인 HTTP헤더 예시 2가지 Authorization "Authorization"헤더 정보는 클라이언트가 적절한 자격 증명을 가지고 있는지 확인하기 위한 정보이다 일반적으로 REST API 기반 애플리케이션의 경우 클라이언트와 서버 간의 로그인(사용자ID/비밀번호) 인증에 통과한 클라이언트들은"Authorization"헤더 정보를 기준으로 인증에 통과한 클라이언트가 맞는지 확인하는 절차를 거친다. User-Agent 실무에서 애플리케이션을 구현하다보면 여러가지 유형의 클라이언트가 하나의 서버 애플.. 더보기

728x90