1. 템플릿 엔진 - 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 - ex ) JSP, Freemarker(서버템플릿 엔진), React, View(클라이언트 템플릿엔진) 자바스크립트에서 JSP나 Freemarker처럼 자바코드를 사용할 수는 없나요? FE의 자바스크립트가 작동하는 영역과 JSP가 작동하는 영역이 다르다. JSP 및 Freemarker은 주로 서버에서 동적 컨텐츠를 생성하고 이를 클라이언트로 보내는데 사용되는 서버 측 기술이고, 자바스크립트는 브라우저에서 실행되는 클라이언트 측 스크립트 언어이다. 서버에서 Java코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달하는데, 이 때 자바스크립트 코드는 단순한 문자열이기에 코드로서 동작하지 않는..
전체 글
보통 Entity에는 해당 데이터의 수정시간과 생성시간을 포함한다. 언제 만들어지고 수정되었는지는 차후 유지보수에 있어서 매우 중요한 정보이다 매번 DB에 삽입 전, 갱신 전에 날짜 데이터를 등록/수정하는 코드가 여기저기 들어가면 귀찮고 코드가 지저분 해짐. 이를 해결하고자 JPA Auditing을 사용 1. JPA Auditing Auditing을 사용하면 Entity를 누가 언제 생성/수정했는지 자동으로 기록하게 할 수 있다. 2. JPA Auditing 적용하기 1) BaseTimeEntity.java @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @Created..
API를 만들기 위해서는 3개의 클래스가 필요하다. 1) Request 데이터를 받을 Dto 2) API 요청을 받을 Controller 3) 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 1. Spring 웹 계층 1) Web Layer - 흔히 사용하는 컨트롤러(Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 - 이외에도 필터(@Filter), 인터셉터, 컨트롤러(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 의미 2) Service Layer - @Service에 사용되는 서비스 영역 - 일반적으로 Controller와 Dao의 중간 영역에서 사용된다 - @Transactional이 사용되어야 하는 영역 * DAO : Data Ac..
1. build.gradle에 dependencies 안에 JPA 의존성을 설치 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'com.h2database:h2' - spring-boot-starter-data-jpa : 스프링 부트용 Spring Data Jpa 추상화 라이브러리, 스프링부트 버전에 맞춰 자동으로 JPA관련 라이브러리들의 버전을 관리해줌. - h2 : 인메모리 관계형 데이터베이스로 별도의 설치없이 프로젝트 의존성만으로 관리할 수 있고, 메모리에서 실행되기 때문에 어플리케이션을 재시작할 때마다 초기화된다는 점을 이용해 테스트 용도로 많이 사용 2. domain 패키지에 posts 패..
1. private 접근자 객체 지향의 원칙 중 하나는 정보은닉(Information Hiding) 이다. 객체의 구체적인 정보를 외부에 노출하지 말라는 것이다. 이러한 이유로 자바에서는 클래스를 작성할 때 모든 필드를 private으로 숨기고 public 메소드를 통해 간접적으로 필드를 다룬다. 2. 무결성이란? 데이터의 정확성과 일관성을 유지하고 보증하는 것 3. 무결성이 필요한 이유? 외부에서 가격이라는 필드에 직접 접근한다면 0보다 낮은 값을 줄 수 도 있다. 이 경우에는 객체의 무결성이 깨지기 때문에 이를 방지하기 위해서 Getter/Setter를 사용하여 데이터의 무결성을 지켜준다. 4. Getter/Setter를 사용할 때 왜 데이터 무결성이 지켜지는가? Getter, Setter를 이용해서..
1. JPA 1) JPA란?(Java Persistence API) - JPA는 자바에서 사용하는 ORM(Object-Relation Mapping) 기술 표준 - JPA는 자바 애플리케이션과 JDBC 사이에서 동작하며, 자바 인터페이스로 정의되어 있다. - JPA는 단순한 명세, 구현이 없음 ORM : Object-Relation Mapping(객체 관계 맵핑) - 객체와 관계형 데이터베이스의 데이터를 매핑하는 기술 - ORM 프레임워크가 객체와 데이터베이스 중간에서 매핑 - 객체와 테이블을 매핑하여 패러다임 불일치 문제를 해결 - ex) Hibernate, EclipseLink, OpenJPA * 패러다임 불일치 - '객체지향 프로그래밍'은 추상화, 캡슐화, 정보은닉, 상속, 다형성등 시스템의 복잡성..
1. 롬복 소개 1) 롬복이란? - 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString등을 어노테이션으로 자동 생성해주는 라이브러리 2) 롬복의 장단점 (1) 장점 - Lombok은 복잡하고 반복되는 코드를 어노테이션 기반의 코드 자동생성으로 생산성 향상되고 코드가 축소되어 가독성 및 유지보수성을 높일 수 있습니다. (2) 단점 - 코드가 직접 눈에 보이는 것이 아니라 직관성이 떨어질 수 있다. 2. 롬복 설치 IntelliJ 2020.03 버전 이후로는 Lombok 라이브러리가 기본 Plugin으로 설치되어 있기 때문에 dependencies와 설정만 바꿔주면 된다. 1) dependencies 변경 * Gradle 버전이 올라가면서 Lombok 의존성을 추가..
1. TDD vs Unit Test - TDD와 Unit Test는 다르다. 1) TDD (Test Driven Development) '테스트 주도 개발' - 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스 - 항상 실패하는 테스트를 먼저 작성하고 (Red) - 테스트가 통과하는 프로덕션 코드를 작성하고 (Green) - 테스트가 통과하면 프로덕션 코드를 리팩토링 (Refactor) 2) Unit Test '단위테스트' - 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트 - 모듈 : 애플리케이션에서 작동하는 하나의 기능 또는 메소드 2. Unit Test의 장단점 1) 장점 - 개발단계 초기에 문제를 발견하게 도와준다. - 개발자가 나중에 코드를 리팩토링하거나 라이..