백엔드 45

Spring JPA - 날짜 사이 데이터 가져오기 (LocalDateTime)

[쿼리 메서드 사용] public interface PostRepository extends JpaRepository { List findAllByCreateAtBetween(LocalDateTime start, LocalDateTime end); } JpaRepository에서 By(날짜 엔티티)Between문을 사용하여 정의할 수 있다. public void test() { LocalDateTime startDatetime = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.of(0,0,0)); LocalDateTime endDatetime = LocalDateTime.of(LocalDate.now(), LocalTime.of(23,59,59));..

백엔드/스프링 2022.01.29

SpringBoot JPA - @ManyToOne 사용하기

@ManyToOne 어노테이션을 통해 다른 테이블에서 FK를 참조하여 사용할 수 있다. @ManyToOne은 단방향 다대일[N:1] 연관관계 매핑을 나타낸다. 테이블은 FK(외래 =키)를 통해서 두 테이블이 연관관계를 맺게 되는데, 객체 양방향 관계(테이블 둘 다 참조하는 경우) 외래 키를 관리하는 곳을 지정해야 한다. 다대일 (@ManyToOne)의 경우 외래키를 관리하는 곳이 N이므로, 연관관계의 주인이 된다. 내가 관리하는 Post 테이블에서는 user의 PK인 Id 값과, category의 키 값인 id 값이 필요하다. 이때 @ManyToOne(fetch = LAZY)를 각각 FK에 추가하고, @JoinColumn(name)을 이용해 연관관계 매핑이 가능하다. 그러면 어떻게 User와 Catego..

백엔드/스프링 2022.01.27

타임리프 / SpringEL 변수 표현식, 기본 객체들 - 스프링 MVC 2편

타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다. 변수 표현식 : ${...} SpringEL 다양한 표현식 사용 Object user.username : user의 username을 프로퍼티 접근 -> user.getUsername() user['username'] : 위와 같음 -> user.getUsername() user.getUsername() : -> user의 getUsername() 을 직접 호출 List users[0].username : -> List에서 첫 번째 회원을 찾고 username 프로퍼티 접근 list.get(0).getUsername() users[0]['username'] : 위와 같음 Map userMap['userA'].username : Map에서 userA..

백엔드/스프링 2022.01.25

타임리프 - 텍스트 쓰는 방법 / Escape - 스프링 MVC 2편

타임리프는 기본적으로 HTML 테그의 속성에 기능을 정의해서 동작한다. HTML의 콘텐츠(content)에 데이터를 출력할 때는 th:text 를 사용하면 된다. HTML 콘텐츠 영역안에서 직접 데이터를 출력하고 싶으면 [[...]] 를 사용하면 된다. Escape HTML 문서는 같은 특수 문자를 기반으로 정의된다. 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 특수 문자가 있는 것을 주의해 사용해야 한다. 우리가 Spring 이런식의 출력을 원한다면 소스는 Spring! 의 출력으로 바뀐다. Unescape unescape를 하기 위해서 타임리프의 th:text -> th:utext [[...]] -> [(...)] 로 변경하면 된다. HTML 엔티티 웹 브라우저..

백엔드/스프링 2022.01.25

thymeleaf의 특징 - 스프링 MVC 2편

[thymeleaf의 특징 3가지] 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. 스프링 통합 지원 타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다.

백엔드/스프링 2022.01.25