실제 활동중인 커뮤니티를둘러보니 게시글 목록, 게시글 상세보기 등의 View단에 작성일자 표기같은 부분들이 아쉬웠다. 그래서 수정할 부분은 User, Post Entity JPA Auditing 추가 (createDate, modifiedDate) 작성일 추가 바로 바꿔보자 Jpa Audit 생성일자, 수정일자 등을 엔티티가 만들어질때 수동으로 넣어줘도 되지만, JPA를 사용해 도메인을 데이터베이스에 매핑할때 생성일, 수정일 같이 공통적으로 가지는 칼럼,필드들을 따로 분리해서 관리할 수 있는데 JPA Audit을 이용하면 Spring Data JPA에서 이 칼럼,필드들을 자동으로 채워준다. Main Entry @SpringBootApplication @EnableJpaAuditing public clas..
댓글 수정, 삭제를 구현하기 전에 Spring Security와 Thymeleaf로 게시글을 작성자만 삭제, 수정 가능하게 리팩터링 한다. Spring Security에서 관리하는 세션을 Thymeleaf 에서 접근할 수 있다. https://www.thymeleaf.org/doc/articles/springsecurity.html Thymeleaf + Spring Security integration basics - Thymeleaf Have you switched to Thymeleaf but your login and error pages are still using JSP? In this article we will see how to configure your Spring application ..
기존 CRUD 게시판에 댓글 작성 시 감정 분석 API를 사용해 긍정, 중립, 부정으로 댓글 태그를 관리해 사용자가 원하는 댓글만 필터링하기 위해 댓글 작성 서비스에 네이버 API 적용 및 댓글 작성 및 조회를 구현했다. 댓글관리를 위한 Comment Entity 및 DTO 생성 @Entity @Getter @NoArgsConstructor public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String content; @Enumerated(EnumType.STRING) private Emotion emotion; @ManyToOne @JoinColumn(name = "p..
전체 페이지별로 게시물들을 보여주는 것 외에 사용자가 필요한 정보를 찾기 위핸 검색 기능을 추가해보려고 한다. 검색한 데이터들도 저번 포스트에 적용했던 페이징을 적용한다. Srping Data JpaRepository 쿼리 간단한 쿼리문들은 JpaRepository에서 메서드를 정의해주는 것으로 대체할 수 있다. findBy 뒤에 엔티티의 컬럼과 Containing, Contains, IsContaining 등과 조합한 메소드에 파라미터로 컬럼을 넘겨주면 DB로 쿼리문을 날릴 수 있고, 이전 페이징 처리와 마찬가지로 JPARepository를 사용하면 Page 객체로 리턴 받을 수 있다. PostRepository public interface PostRepository extends JpaReposit..
간단한 CRUD기능을 구현한 커뮤니티에 필요한 기능을 하나씩 추가해보려고 한다. 두번째는 페이징 기능을 추가하려고한다. 게시글 목록을 조회할 때 데이터가 추가될 때마다 전체 게시글을 불러오는 건 지금은 문제가 없지만 데이터가 많아질수록 데이터베이스도, 서버에서도 부하가 심해진다. 사용자의 눈에 보일만큼만 불러오기 위해 Spring Data Jpa로 간단하게 구현해보려고 한다. Spring Data JPA 페이징, 정렬 처리는 어떻게 ? Spring JPA Data를 사용하면 보통 JpaRepository를 사용한다. CRUD 기능만 필요한 Reposiotry라면 CrudRepository를 사용해도 상관없고 페이징과 정렬까지 들어간 Repository가 필요하면 JpaRepository를 사용하면 된다...
간단한 CRUD기능을 구현한 커뮤니티에 필요한 기능을 하나씩 추가해보려고 한다. 첫번째는 한번도 건드려본적이 없던 스프링 시큐리티를 이용해 회원가입과 로그인을 구현해보려고 한다. Spring Security 간단설명 스프링 시큐리티 인증/인가 포스트 Spring Security는 스프링 기반의 애플리케이션에서 인증과 권한을 통해 접근을 제어하는 프레임워크라고 하는데 대략 어디에 어떻게 쓰는지 간단하게 공부한 내용을 정리하고 간다. 보통 스프링을 처음 접하면 아래와 같이 클라이언트와 소통한다고 생각한다. 하지만 실제로 클라이언트와 실질적인 소통을 하는 것 서블렛 컨테이너(톰캣서버)이고 서블렛 컨테이너를 거쳐 스프링 디스패쳐 서블렛이 받으면 그때 스프링 공부할 때 배웠던 핸들러 맵핑, 핸들러 어댑터를 통해서..
새롭게 생각난 약간의 아이디어와 백엔드 기초를 버무려 보려고 프로젝트를 시작하기전에 프로젝트 명세서를 작성합니다. 1. 프로젝트 주제 인터넷의 익명성이 주는 단점 중에 하나는 남이 쓴 부정적인 글에 상처를 받을 수 있다는 점이라고 생각했고, 기본적인 CRUD 기능을 가진 커뮤니티에 댓글 작성 시 글의 내용을 네이버 감정분석 API를 이용해 긍정, 중립, 부정 태그를 매겨 사용자가 원하는 감정범위의 댓글을 볼 수 있는 댓글감정 필터링 서비스를 추가해 구현한다. 2. 개요 프로젝트명 : Emotion Community 개발 인원 : 1명 개발 기간 : 2022.12.26 ~ 2023.1.27, 추가적으로 리팩터링 진행 예정 주요 기능 : 게시판 - CRUD, 페이징 처리, 검색 사용자 - 회원가입, 로그인,..
개요 김영한님의 스프링, JPA 강의를 듣다가 야생형으로 프로젝트를 만들어봐야한다고해서 쓰던 애매한 개념을 갖고 Spring Data JPA의 Repository를 만지작 거리다가 그렇게 깊지않은 지식인데도 헷갈리는것 같아 글을 썼다. JPA? Hibernate? JPA: Java Persistence API의 약자로 데이터베이스와 객체 사이의 개념을 좁히기 위한 Interface이다. Hibernate: JPA에서 정의한 인터페이스를 구현한 구현체이다. DB의 테이블과 매칭되는 Entity를 영속성 컨텍스트를 이용해 엔티티를 관리하는 EntityManager를 사용해 객체와 데이터베이스를 맵핑한다. JPA? Spring Data JPA? Hibernate 사용 코드 public void transact..