개인 공부

개인 공부/Spring

[Spring] #9 JPA 엔티티 매핑

엔티티 매핑 미리 설계한 요구사항에 맞게 객체를 설계하고, 관계형 데이터베이스를 설계했다면 우리는 이 둘을 매핑시켜줘야 한다. 하지만 JPA의 특성 덕분에 우리는 객체 위주로 설계하고 이를 매핑시켜주면 된다. 조건에 맞게 엔티티를 매핑시켜주기 위해서는 어떤 개념들이 필요할까 엔티티와 테이블 매핑 @Entity ? @Entity 어노테이션이 붙은 클래스는 애플리케이션 실행 시 자동으로 JPA 가 관리하고 이를 엔티티라 부른다. 즉 JPA 를 사용해서 테이블과 매핑될 클래스는 반드시 선언 전 @Entity 어노테이션이 필수이다. 이 때 엔티티 이름을 지정할 수 있는데, @Entity(name = " ") 옵션을 주면 된다. 없다면 클래스 이름을 기본값으로 사용한다. @Table ? @Table 어노테이션은 ..

개인 공부/Spring

[Spring] #8 JPA 동작 원리

JPA 동작 원리 어떤 기술을 잘 활용하려면, 내부 동작원리를 잘 이해하는게 중요하다고 생각한다. 때문에 JPA 를 본격적으로 사용하기 전, JPA 내부 동작원리에 대해서 알아보자. JPA 의 내부 동작원리에 대해서 알려면 영속성 컨텍스트에 대해서 알아야한다. 영속성 컨텍스트 ? JPA 를 공부하다보면, 영속성 컨텍스트라는 단어를 쉽게 볼 수 있다. 영속성 컨텍스트란 엔티티를 영구 저장하는 환경 이라는 뜻이다. 말로는 쉽게 이해되지 않지만 논리적인 개념으로, 엔티티를 저장하고 관리하는 하나의 공간이라고 생각하면 편하다. 이러한 영속성 컨텍스트는 엔티티 매니저를 통해 접근할 수 있다. 엔티티 ? 엔티티란, 데이터베이스를 공부하는 대부분의 사람들이 알듯이 하나의 데이터 집합이다. 우리는 객체 위주로 설계하기..

개인 공부/Spring

[Spring] #7 JPA의 필요성

JPA 등장 배경 현재는 객체를 관계형 데이터베이스에 저장하고 관리하는 방식을 많이 채택해 사용하고 있다. 데이터를 저장하려면 결국 개발자는 SQL에 의존할 수 밖에 없으며 이로 인해, 무한 반복적인 코드와 지루함의 연속이 되어가고 있다. 단순히 필드 값을 추가 조회 하기 위해서는 복잡한 SQL 쿼리를 반복적으로 작성해야했다. 또한 객체와 관계형 데이터베이스는 애초에 다른 패러다임을 가지고 있다. 상속, 연관관계, 데이터 대입 등 근본적인 접근이 달랐다. 때문에 데이터베이스 테이블에 맞추어 객체를 모델링하고, 저장해야했다. 이로서 객체지향의 특성 ( 추상화, 캡슐화, 상속, 다형성 ) 은 살리지 못 하고 있었다 ... JPA ? 스프링을 공부하다보면, JPA 용어를 쉽게 볼 수 있다. 그만큼 중요하고 핵..

개인 공부/전공 지식 정리

[Git] Git - 기초 키워드 정리

매번 찾아보기 시간이 아까워서 내게 필요한 Git 키워드를 정리해보겠습니다. 가장 기초적인 키워드를 제가 사용한 순서대로 정리하겠습니다. clone 프로젝트를 이어받거나, 유지보수, 테스트 하는 경우 clone 키워드를 가장 처음에 사용하였습니다. 깃허브에 있는 코드 url 을 복사해 다음과 같은 명령어로 코드를 가져왔습니다. $ git clone [url] remote 코드를 가져온 후, 파일의 원격 저장소 주소를 확인할 필요가 있습니다. 다음과 같은 명령어로 깃 원격 저장소 주소를 확인하면 됩니다. $ git remote -v remote 명령어는 클론 받은 코드가 아닌 새롭게 생성한 프로젝트를 원격 저장소에 추가할 때에도 사용됩니다. 다음과 같은 명령어로 새로운 url의 origin 이름을 가진 원..

개인 공부/Spring

[Spring] #6 스프링 빈 등록

6장에서는 스프링 빈이 무엇인지, 어떻게 등록하는지 알아보겠습니다. 공부 자료는 인프런 김영한 강사님의 스프링 입문편을 들었습니다. https://inf.run/Jk5T 스프링 빈이란 ? 스프링 빈이란, 스프링 컨테이너가 관리하는 자바 객체입니다. 코드에서 new() 키워드를 통해 다양한 객체를 만들어 낼 수 있지만, 이 모든 객체가 스프링 컨테이너가 관리하지 않기 때문에 모든 객체가 스프링 빈은 아닙니다. 사용할 객체를 스프링 빈으로 등록해야지 관리하기 용이하고 편리하기 때문에 빈에 대해 이해하고, 활용하는 것이 매우 중요합니다. 스프링 빈을 등록하는 방법은 2가지가 있습니다. 스프링 빈을 등록하는 2가지 방법과 각각의 장단점에 대해서 알아보겠습니다. 컴포넌트 스캔 활용 첫 번째로 컴포넌트 스캔을 활용..

개인 공부/Spring

[Spring] #5 회원 서비스 구현

5장에서는 실제 비즈니스와 직접적으로 연관된 서비스를 구현해보겠습니다. 공부 자료는 인프런 김영한 강사님의 스프링 입문편을 들었습니다. https://inf.run/Jk5T 서비스 자바 스프링에서 서비스는 앞서 구현한 리포지토리에 접근해 비즈니스와 직접적으로 관련된 동작을 수행하는 코드입니다. 비즈니스 요구사항으로 회원 등록과 조회가 있었습니다. 요구사항을 만족하기 위해 먼저 서비스 패키지를 만든 후, 패키지 안에 MemberService 코드를 구현합니다. MemberService 전체코드입니다. 메소드를 확인하기 전에 먼저 MemberService 선언에 대해서 알아보겠습니다. 하나의 MemberService 마다 새로운 MemberRepository 를 new 키워드를 통해 생성한다면, 각각의 서비..

개인 공부/Spring

[Spring] #4 회원 리포지토리 테스트 케이스 작성

3장에 이어서 예제 요구에 대한 백엔드를 마저 구성해보겠습니다. 4장에서는 3장에서 구현한 리포지토리에 대한 테스트 케이스를 작성하고 테스트를 하는 과정까지 포스팅 하겠습니다. 공부 자료는 인프런 김영한 강사님의 스프링 입문편을 들었습니다. https://inf.run/Jk5T 테스트 자바 스프링에서는 개발한 메소드를 테스트하는 여러가지 방법이 있습니다. 자바 main 메소드를 통해 실행하는 방법, 웹 어플리케이션 컨트롤러를 통해 실행하는 방법 등이 있습니다. 그러나 이러한 방법은 준비하고 실행하는데에 오랜 시간이 걸리며, 반복 실행하기 어렵다는 단점이 있습니다. 때문에 자바 스프링에서는 JUnit 프레임워크를 사용하여 테스트를 실행합니다. Java 클래스에 대한 테스트 코드를 만드는데에 IntelliJ..

개인 공부/Spring

[Spring] #3 회원 도메인과 리포지토리 구현

2장에 이어서 예제 요구에 대한 백엔드를 마저 구성해보겠습니다. 공부 자료는 인프런 김영한 강사님의 스프링 입문편을 들었습니다. https://inf.run/Jk5T 회원 도메인 생성 2장에서 설명했듯이, 도메인은 회원 객체라고 생각하시면 됩니다. 예제에서 회원 ID와 이름 데이터를 요구하였기 때문에 이에 맞게 생성하시면 됩니다. 먼저 위와 같이 도메인 패키지를 먼저 생성한 후, 아래와 같이 Member 클래스를 작성해줍니다. package com.example.demo.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { ..

Da2isy
'개인 공부' 카테고리의 글 목록 (7 Page)