분류 전체보기 86

임베디드 타입

엔티티에 하나의 객체를 필드로 포함시켜 객체처럼 사용하기 위해서 임베디드 타입을 사용 할 수 있습니다. 임베디트 타입은 상속과 비슷하게 객체를 포함시켜 재사용가능한 값 객체를 만들게 됩니다. 주로 주소,기간,연락처,좌표 등 여러 속성을 하나로 묶을 때 사용합니다. 1. 임베디드 타입이란? 임베디드 타입은 엔티티 내부에 새로운 값 타입을 정의하는 것 입니다. 주로 기본값 타입을 모아서 만들어서 복합 값 타입이라고도 합니다. 예를 들어보겠습니다. 회원 엔티티는 이름,근무시작일,근무종료일,주소,도시,주소번지,주소 우편번호를 가진다고 가정해보겠습니다.직접 풀어서 구체적으로 설명을 할 수도 있겠지만 보통 저희는 위 사진처럼 추상적으로 설명합니다. 즉 회원엔티티는 이름,근무시작일,근무종료일,주소,도시,주소번지,주..

기본 키 매핑

본 글은 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 강의를 바탕으로 작성한 글입니다. 엔티티를 구성을 할때 각 행을 유일하게 식별해 줄 수 있는 무언가가 필요합니다. 엔티티의 행을 구별하지 못한다면 결국 데이터를 식별할 수 없거나 데이터의 무결성이 깨지기 때문입니다. 따라서 엔티티에서는 각 행을 구별해 줄 즉 유일성을 보장해주기 위해 기본키를 사용하게 됩니다. 엔티티의 기본키는 값의 유일성을 보장해주며 데이터의 무결성 또한 유지 해줍니다. 기본키는 중복된 값이나 NULL값을 허용하지 않기 때문에 데이터의 정확성과 일관성을 유지 할 수 있습니다. 또한 데이터베이스에서 다른 테이블과의 관계를 설정할 때 외래키를 사용 할 수 있습니다. 이렇게 하면 연..

필드와 컬럼 매핑

본 글은 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가지 역할은 다음과 같습니다...