목록전체 글 (110)
Coding Note
전 게시물 등록 화면 구현에 이어서 조회/수정/삭제 화면 및 기능을 구현해봅시다! 대규모 프로젝트 시 조회는 조회용 프레임워크를 사용함. 등록/수정/삭제 등은 SpringDataJpa를 통해 진행함. 책 속 저자는 조회 시 Querydsl을 추천한다고 한다. 이유는 다음과 같다. 1. 타입 안정성이 보장됨 2. 국내 많은 회사에서 사용 중 3. 래퍼런스가 많음 1. 조회 전체 조회를 위해 index.mustache 코드 추가 - index.mustache 게시글번호 제목 작성자 최종수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} 머스테치의 문법 사용함. 1. {{#posts}} - posts라는 Lis..
부트스트랩 이용하여 화면 구성하기! 부트스트랩, 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 있는 방법은 크게 2가지가 있다. 1. 외부 CDN 사용 2. 직접 라이브러리를 받아서 사용 Q. 레이아웃 방식 - 공통역역을 별도의 파일로 분리하여 필요한 곳에서 가져다 쓰는 방식 1. 레이아웃 파일 만들기 src/main/resources/templates 디렉토리에 layout 디렉토리를 추가 생성한다. 디렉토리안에 footer.mustache, header.mustache 파일 생성 코드는 아래와 같다 - header - footer 페이지 로딩 속도를 높이기 위해 CSS는 header, JS는 footer에 두었다. js의 용량이 크면 body 부분의 실행이 늦어지기 때문에 js는 body 하단에 두어..
Q1. 템플릿 엔진 - 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 - 자바 진영에서는 Jsp, Velocity, Freemaker, Thymeleaf 등 다양한 서버 템플릿 엔진이 존재함. 단점 - JSP/Velocity : 스프링 부트에서 권장하지 않는 템플릿 엔진 - Freemaker : 템플릿 엔진으로는 너무 과하게 많은 기능을 지원함. 높은 자유도로 인해 숙련도가 낮을수록 Freemaker안에 비즈니스 로직이 추가될 확률이 높음. - Thymeleaf : 문법이 어려움. Q2. 머스테치(mustache) - 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 장점 - 문법이 다른 템플릿 엔진보다 심플 - 로직 코드를 사용할 수 없어 View의 역할과 서버의 역할이 명확하..
유지보수에 있어서 생성, 수정 시간은 중요한 정보가 된다! JPA Auditing으로 생성 시간/수정 시간 자동화하기! JPA Auditing - Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능 - 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어줌 LocalDate - java8 이전 시간 출력은 Date/Caledar 클래스를 사용하였으나 다양한 문제들로 인해 LocalDate/LocalDateTime이 등장 1. 생성/수정 시간 추가하기 domain패키지에 클래스를 생성한다. - BaseTimeEntity package com.bs.book.springboot.domain.posts; import lombok.Getter; import org.springframewor..
등록, 수정, 조회 API 만들기! API를 만들기 위해 총 3개의 클래스가 필요하다! 1. Request 데이터를 받을 DTO 2. API 요청을 받을 Controller 3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 1. Spring 웹 계층 Web Layer - 컨트롤러와 JSP/Freemaker 등의 뷰 템플릿 영역 - 필터, 인터셉터, 컨트롤러 어드바이스등 외부 요청과 응답에 대한 전반적인 영역을 이야기함. Service Layer - @Service에 사용되는 서비스 영역 - 일반적으로 Controller와 Dao의 중간 영역에서 사용됨 - @Transactional이 사용되어야 하는 영역 Repository Layer - 데이터 저장소에 접근하는 영역 DTOs - DTO(D..
스프링에서 JPA로 데이터베이스 다루기 1. domain 패키지 생성하고 posts 패키지 생성 후 클래스 인터페이스 생성 도메인(소프트웨어 요구사항)을 담을 패키지를 생성한다. 기존 MyBatis은 쿼리 매퍼를 사용하여 dto 패키지를 떠올리지만 다름. - Posts 클래스 코드 package com.bs.book.springboot.domain.posts; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; @Getter @NoArgsConstructor @Entity public class Posts { @Id @GeneratedValue(strategy = Ge..
TMI 정보처리기사 필기시험 준비하느라... 스터디를 제대로 못했다.. 그래도 필기 결과는 합격!! 이제 스터디에 몰두해야지~ Q1. JPA 란? - 자바 표준 ORM(Object Relational Mapping) - 인터페이스로서 자바 표준 명세서 - 객체를 매핑하는 기술 - JPA를 사용하기 위해 구현체가 요구됨 - Hiberate, Eclipse, Link 등 JPA는 객체 지향 프로그래밍 언어와 관계형 데이터베이스 2개 영역을 중간에서 패러다임을 일치시켜주기 위한 기술이다. 즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 실행한다! Q2. Spring Data JPA - Spring에서 사용하는 JPA - JPA를 사용하기 위해 구현체가 필..
Q1. Lombok이란? - 자바 개발자들의 필수 라이브러리 - 자바 개발시 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해줌. 활용해봅시다. 1. build.gradle에 등록하기 의존성에 lombok을 등록하고 새로고침하여 라이브러리에 내려받는다(의존성 주입) 2. lombok 설치하기 plugins에서 설치 받으면 된다. 설치하고 인테리제이 재시작하면 아래 설정 팝업창이 뜨니 눌러주면 된다. 안 뜨는 사람들은 [Setting - build, Exclusion~ - Annotation Processors] 에서 설정하면 된다! lombok 설정까지 완료했으니 사용해보자!! 3. 기존 코드 롬복으로 전환하기 (Hello Controller)..