-
스프링부트 일급객체 사용하기 : @Embeddable, @Embeded 객체지향적으로 코드 변경하기 : 컬렉션을 그대로 사용하지않고, wrapper 클래스를 만들어 객체.메소드로 요청하게끔 코드 짜기 응집도가 높은 엔티티를 분리해서 각각 관리하면서(역할 분리 - 유지보수에 유리함) 쓸 때는 하나에서 쓸 수 있게 객체지향 생활체조 원칙 객체지향 언어를 쓰면서 객체지향 개발을 지양하는 개발자가 되지말자! @Entity public class Question { . . . @Embeded private Answers answers; . . . } @Embeddable public class Answers { @OneToMany(mappedBy = "question") @Where(clause = "deleted =...
-
스프링부트 게시글 상태 구현하기 게시글 바로 삭제가 아닌 상태만 변경하기 복구 요청, 보관 개념으로 상태만 변경해두었다가 일정 기간이 지났을 때 데이터베이스에서 삭제하도록 만들기 deleted 상태 : true / false로 구분 Question 엔티티 boolean을 저장하는 방법으로 해결 /* Entity */ @Entity public class Qusetion { . . . @Column(nullable = false) private boolean deleted; } Question 엔티티 boolean 대신 문자 혹은 0, 1로 저장하는 방법으로 해결 방법1 : JPA 기능 중 컨버터 기능을 사용하면 됨 -...
-
스프링부트 스프링 인터셉터 - 로그인 확인 로그인 기능이 들어가는 기능마다 세션 확인 로직을 구현하거나 각 컨트롤러마다 별도 메소드로 빼고 사용하는 방식으로 개발해야하는데, 각각 구현해두지않고 별도로 구현해두고 요청이 들어왔을 때 거치도록 하는 방법이 있음 방법 : 인터셉터, 필터 공통적으로 처리해야하는 로직을 구현해두고, 공통적으로 처리되도록 하는 기능 필터와 인터셉터의 차이 필터 : J2EE에서 정의된 기능, Dispatcher Servlet(아래 설명)의 앞단에서 처리(스프링 컨텍스트 외부, 스프링과 무관한 자원에 대해 동작) 인터셉터 : 스프링 프레임워크에서 자체적으로 제공하는 기능, Dispatcher Servlet에서 컨트롤러로...
-
스프링부트 Entity 관계 설정하기 : 게시글 쓰기 관계를 설정해주기위해서 테이블에 관계 키를 설정해줘야함 : FK(foreign key) 외래키 FK : 테이블의 컬럼 중 다른 테이블의 레코드를 같이 조회(참조)하기위해 필요한 키 - 다른 테이블의 ID를 FK로 사용함(데이터 무결성을 보장하기위해 - NULL이거나 존재하거나(PK)) 관계 설계하기 어디에서 조회할 것인지에 따라 단방향, 양방향 관계 맺기가 가능함 : 어노테이션으로 관계를 설정할 수 있음 게시글 쓰기 : 1명의 유저가 여러 게시글 ID를 가지는 레코드를 저장할 수 있으니 OneToMany, 여러 게시글은 레코드 저장할...
-
스프링부트 로그인 구현하기 로그인 구현 전에 알아야할 개념 : HTTP, 쿠키와 세션 HTTP : 문서를 주고받기위해 고안된 프로토콜로 1회 통신 후 소켓 연결을 끊어버림(이전 통신 정보, 상태를 알 수 없음) 쿠키와 세션 : HTTP의 단점을 채우기위한 방법 쿠키 : 로컬에 클라이언트 상태 정보를 그대로 기록한 데이터 파일, 만료 시간 정보까지 있음 세션 : 쿠키를 사용하지만 담는 값이 다름, 서버에서 발급해준 ID값을 담음, 웹서버에 접속한 이후로 브라우저를 종료할 때까지 해당 세션ID로 요청을 보내면 같은 요청자로 봄(상태...