개발자 취업준비 37

필드와 컬럼 매핑

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 1. 요구사항에 따른 필드 구성방법 회원은 일반 회원과 관리자로 구분해야 한다.회원 가입일과 수정일이 있어야 한다.회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다.다음과 같은 요구사항이 있다고 했을 때 엔티티를 어떻게 구성할 수 있을까요? @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STRIN..

엔티티 매핑

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 1. 엔티티 매핑이란? JPA에서 가장 중요한 두가지중 하나인 엔티티 매핑입니다. 엔티티 매핑은 객체와 관계형 데이터 베이스를 어떻게 매핑을 해서 사용하는지에 대한 설계적인 측면에서 가장 중요하다고 할 수 있습니다. 앤티티를 매핑할 때는 다음과 같은 어노테이션을 이용하게 됩니다. 객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑: @ManyToOne, @JoinColumn 2. @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티 입니다. JPA를 사용해서 테이블과 매핑할 클..

준영속 상태

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 1. 준영속 상태란영속에서 준영속으로 가는 상태를 준영속 상태라고 합니다. 영속상태에서 엔티티가 영속성 컨텍스트에서 분리가 되는 상태입니다.영속성 컨택스트가 제공하는 기능을 사용하지 못합니다.영속상태란 1차캐시에 데이터베이스 값이 올라온 상태 즉 JPA에 의해 관리받고 있는 상태라 볼 수 있습니다.준영속 상태란 이렇게 JPA에 관리받고 있는 상태에 엔티티를 관리되지 않은 상태로 빼버리는 것 입니다. 이렇게 되면 JPA가 제공하는 기능을 사용하지 못하게 됩니다. 준영속 상태로 만드는 방법은 다음과 같습니다.em.detach(entity): 특정 엔티티만 준영속 상..

플러시

1. 플러시란? 플러시란 영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영하는 것 입니다.데이터베이스가 커밋이 될 때 플러시가 자동으로 호출이 됩니다. 그러면 플러시가 발생할 때 다음과 같은 일들이 발생합니다.변경감지수정된 엔티티 쓰기 지연 SQL 저장소에 등록쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록,수정,삭제 쿼리)영속성 컨텍스트를 플러시 하는 방법에는 다음과 같은 방법이 있습니다.em.flush() - 직접 호출트랜잭션 커밋 - 플러시 자동호출JPQL 쿼리 실행 - 플러시 자동 호출예를 들어서 다음과 같은 코드를 구성해보겠습니다. try{ //영속 Member member = new Member(200L,"member200") em.persist(member); System.o..

영속성 컨텍스트

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. jpa의 내부구조가 어떻게 동작하는지 알아보기 위해 영속성 컨텍스트라는 것에 대해 이해해보겠습니다. 영속성 컨텍스트란?JPA에서 가장 중요한 것 두가지를 뽑아보라고 하면 DB의 설계와 JPA를 어떻게 매핑해서 쓸것인지 에 대한 것과 실제 JPA가 내부에서 어떻게 동작하는지에 대한 부분 입니다. 이 JPA가 내부에서 어떻게 동작하는지 자세히 알기 위해서 영속성 컨텍스트에 대해 알아보겠습니다. [ JPA엔티티 메니저와 JPA 엔티티메니저 팩토리]PA를 보통 쓰게 되면 엔티티 매너저 팩토리와 엔티티메니저를 생성하게 됩니다. 엔티티매니저 팩토리를 통해 고객의 요청이 올때..

JPA 이해하기

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 1. JPA란?JPA는 자바 진영의 ORM 기술 표준압나다. [ORM]Object-relational mapping(객체 관계 매핑)객체는 객체대로 설계관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑대중적인 언어에는 대부분 ORM기술이 존재 orm이라는 것을 사용하게 되면 객체는 객체대로 설계를 하고 관계형 데이터베이스는 관계형 데이터 베이스 대로 설계를 하게 됩니다. 그리고 중간에 ORM 프레임 워크를 통해 객체와 데이터베이스의 차이부분 만큼을 조절하여 해결을 하게 됩니다 . 이렇게 함으로써 데이터베이스의 객체설계와 java의..

객체 CRUD

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 1. 기존 객체의 CRUDpublic class Member {private String memberId;private String name;private String tel;} 이런 member클래스가 있다고 하자 그러면 이 데이터를 조회하기 위해서는 쿼리문을 각각 다음과 같이 작성해야 한다.Insert into member(member_ID, Name, TEL) values select MEMBER_ID, NAME, TEL FROM MEMBER M UPDATE MEMBER SET … TEL = ? 근데 만약 주소 필드를 추가로 작성해야 한다면 이미 작성한 쿼..

OAuth2.0 이해하기

이 글은 스프링부트3 백엔드 개발자 되기 책을 바탕으로 공부한 내용을 정리한 게시글 입니다.  1. OAuth2.0 이란?  OAuth2.0은 웹 및 애플리케이션 인증 및 권한 부여를 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 제 3의 서비스 애플리케이션이 사용자의 리소스에 접근하기 위한 절차를 정의하고 서비스 제공자의 API를 사용할 수 있는 권한을 부여합니다. 쉽게 설명하면 제 3의 서비스에 계정관리를 맡기는 방식이라고 할 수 있습니다. 대표적으로 네이버 로그인, 구글 로그인과 같은 소셜 미디어 간편 로그인이 있습니다. OAuth2.0을 사용해 third-party 애플리케이션이 사용자의 소셜미디어 프로필 정보에 접근할 수 있도록 합니다. OAuth를 구성하는 4가지 역할은 다음과 같습니다...

JWT(Json Web Token) 구현하기

이 글은 스프링부트3 백엔드 개발자 되기 책을 바탕으로 공부한 내용을 정리한 게시글 입니다. 사용자의 인증정보를 확인하기 위한 방법에는 세션 쿠기 기반 인증 방법과 토큰기반 인증과정이 있습니다. 세션쿠키 기반 인증방법은 서버측에서 인증정보를 저장하기 때문에 요청을 할 때마다 DB를 거치는 과정을 겪어야 한다는 단점이 있습니다. 이런 단점을 보안하기 위해 나온게 토큰 기반 인증입니다.  토큰 기반 인증 에서 주요 사용하는 방법으로는 JWT(Json Web Token)이 있습니다. JWT에 대해 SpringBoot와 Spring Security를 기반으로 직접 구현해 보도록 하겠습니다.  1. 토큰 제공자 추가하기 먼저 JWT를 이용하기  위해 의존성을 추가하겠습니다. build.gradle에 의존성을 추가..

JWT 알아보기

이 글은 스프링부트3 백엔드 개발자 되기 책을 바탕으로 공부한 내용을 정리한 게시글 입니다. 사용자가 서버에 접근 할 때 이 사용자가 인증된 사용자인지 확인하는 방법으로는 여러가지가 있습니다.사용자 인증 확인 방법으로는 대표적으로 서버 기반 인증과 토큰 기반 인증이 있습니다. 저번 게시물에서 스프링시큐리티를 통해 기본적으로 제공받은 인증 방법은 세션 기반 인증 방법입니다. 세션기반 인증을 사용해 사용자마다 정보를 담은 세션을 생성하고 저장하여 인증을 하였습니다. 이를 세션 기반 인증이라고 합니다. 토큰기반 인증은 토큰을 사용하는 방법입니다. 토큰은 서버에서 클라이언트를 구분하기 위한  유일한 값인데 서버가 토큰을 생성하여 클라이언트에게 제공해 줍니다. 그러면 클라이언트는 이 토큰을 가지고 있다가 여러 요..