[Spring] - 스프링부트 JPA Auditing으로 생성시간/수정시간 자동화하기
·
Spring
보통 entity에는 해당 데이터의 생성시간과 수정시간을 포함한다.※entity란?엔티티는 데이터베이스 테이블과 매핑되는 클래스이다.즉,DB의 테이블을 객체로 표현한 것이다.package com.jojoldu.book.springboot.domain.posts;import com.jojoldu.book.springboot.domain.BaseTimeEntity;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;import javax.persistence.*;//롬복의 어노테이션(클래스 내 모든 필드의 Getter 메소드를 자동생성)@Getter//기본 생성자 자동추가@NoArgsConstructor//JPA의 주요 어노테..
[Spring] - JPA란?
·
Spring
(1)JPA의 등장배경웹 서비스 개발하고 운영시 피할 수 없는 문제가 데이터베이스를 다루는 일이다.옛날에 스프링을 공부할 때는 iBatis와 같은 SQL매퍼를 이용해서 DB쿼리를 작성했다고 한다.그러다보니 개발보다 SQL을 다루는 시간이 더 많아졌다. 그래서 JPA라는 자바 표주 ORM(object relational Mapping)※ORM이란?객체와 관계형 DB의 데이터를 자동으로 매핑해주는 것을 말한다.객체지향은 클래스를 사용, 관계형 DB는 테이블을 사용하는 객체 모델이랑 관계형 모델간의 불일치가 발생한다.ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결해준다.DB 데이터 객체 필드객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.Persistant API라고도 ..
[Spring] - 롬복 알아보기 및 설치하기
·
Spring
자바 개발자들의 필수 라이브러리 롬복을 알아보자.※롬복은 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본생성자, toString등을 어노테이션으로 자동생성해 주는 라이브러리이다. 롬복 의존성 다운 및 plugins 설치하기먼저 build.gradle에다음과 같은 코드를 추가한다. 그 후 Gradle에 들어가서 Refresh로 새로고침해서 의존성을 내려받는다.그 후 ctrl+shift+A 단축키로 Action실행하여 plugin 설치 팝업으로 들어간다.그 후 Marketplace 탭에서 lombok을 검색하여 설치한다.설치가 다 되면 인텔리제이를 재시작한다. 재시작 하면 인텔리제이 File -> Settings -> Build,Execution,Deployment -> Compiler..
[Spring] - 스프링부트에서 테스트코드 작성하기
·
Spring
견고한 서비스를 만들고 싶으면 TDD를 하거나 최소한의 테스트 코드는 꼭 작성해야만 했다.테스트코드란우선 TDD와 단위 테스트는 다른 이야기이다.TDD는 테스트가 주도하는 개발이다(테스트 코드를 먼저 작성).RED : 항상 실패하는 테스트를 먼저 작성GREEN : 테스트에 통과하는 프로덕션 코드 작성REFACTOR : 테스트가 통과하면 프로덕션 코드를 리팩토링※리팩토링: 기능을 변경하지 않으면서 코드의 구조를 개선하는 과정                    즉, 코드의 가독성, 유지보수성, 성능을 향상시키지만 외부 동작(테스트 결과)은 동일해야 함 단위 테스트는 TDD의 첫 단계인 기능 단위의 테스트 코드를 작성하는 것을 말한다.(순수하게 테스트 코드만 작성하는 것을 말함) ※테스트 코드를 먼저 배운 뒤..
[Spring] Maven/Gradle이란?
·
Spring
자바 프로젝트를 만들면 빌드관리도구 Maven 또는 Gradle을 선택하라고 한다. intelliJ별도의 빌드관리도구 없이 인텔리제이 자체 기능으로 빌드를 관리하는 시스템 간단한 프로젝트에 괜찮지만 의존성 관리가 불편하다. mavenxml기반의 관리도구(pom.xml), 스프링부트나 스프링 프레임워크에서 많이 사용된다.라이브러리 및 의존성 관리가 편리함. gradleGroovy/Kotlin DSL( domain-specific-language)를 사용하여 메이븐보다 코드가 훨씬 간결하다.큰 규모의 멀티프로젝트 빌드를 도울 수 있도록 디자인되었다.그레이들은 프로젝트의 어느부분이 업데이트되었는지 알 수 있기 때문에 점진적 추가가 가능하다. Maven vs Gradle?그래서 뭘 써야할지 고민된다면 두 시스템..
[Spring] 스프링 부트 개념 정리
·
Spring
이제 스프링에 대해서 공부를 좀 해볼 겸 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으면서 모르는 단어나 내용을 적어보면서 백엔드에 대해서 공부를 해보려고 한다. Spring 정의Spring이란 엔터프라이즈용 자바 애플리케이션 개발을 편리하게 해주는 오픈소스 경량급 애플리케이션 프레임워크간단히 말해 애플리케이션을 개발하는데 있어서 필요한 모든 업무 분야 및 모든 기술과 관련된 코드들의 뼈대를 제공하는 것을 의미한다. 빌드관리도구(Maven, Gradle)프로젝트에서 작성한 자바코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 jvm이나 was가 인식할 수 있도록 패키징 해주는 빌드과정여기서 xml, properites,jar파일들은 프로젝트를 구성하고 실행하는데..