본문 바로가기

개발진행목록/게시판 서비스9

[JPA로 게시판 만들기] Spring Interceptor를 사용한 인증 체크 스프링 인터셉터서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결하는 기술URL만 알면 로그인을 하지 않아도 여러 페이지에 접근이 가능하기 때문에, 이를 방지하기 위해 스프링 인터셉터를 사용자세한 내용은 여기에 게시하였습니다.스프링 인터셉터 흐름과 제한정상 요청HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 // 정상 로그인 시비적절한 요청HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 (이후 컨트롤러 호출X)인터셉터 구현LoginCheckInterceptor.javaimport jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletRespon.. 2025. 3. 4.
[JPA로 게시판 만들기] Session을 사용한 로그인, 로그아웃 로그인, 로그아웃 과정로그인 과정아이디, 비밀번호 일치 여부 확인불일치 시 로그인 화면 페이지로 이동일치 시 세션 생성 및 저장세션 유지 시 메인 페이지(home.html)로 이동로그아웃 과정세션 제거세션 유지 확인서블릿 세션 적용HomeController.java@Controller@RequiredArgsConstructorpublic class HomeController { private final MemberRepository memberRepository; @GetMapping("/") public String homeLogin(HttpServletRequest request, Model model){ HttpSession session = request.getSess.. 2025. 2. 19.
[JPA로 게시판 만들기] 지연로딩 적용 지연로딩필요한 시점에 연관된 객체의 데이터를 불러오는 것@xxToxx(fetch = FetchType.LAZY)먼저 프록시를 가져온 후, 실제 사용 시 초기화(DB쿼리가 나감)xToOne 관계의 경우 디폴트는 EAGER(즉시로딩)이므로 변경 필요지연로딩 적용package project.post.domain;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.time.LocalDateTime;@Entity@Getter@Setterpublic class Post { @Id @GeneratedValue @Column(name = "post_id") private Long id; priva.. 2025. 2. 5.
[JPA로 게시판 만들기] API 개발 Member 관련 API회원 등록 API@PostMapping("/api/members")public CreateMemberResponse saveMember(@RequestBody @Valid CreateMemberRequest request){ Member member = new Member(); member.setEmail(request.getEmail()); member.setAddress(new Address(request.getCity(), request.getZip(), request.getStreet())); Long memberId = memberService.join(member); return new CreateMemberResponse(memberId);}.. 2025. 2. 5.
[JPA로 게시판 만들기] 테스트 코드 작성 시작하기 전에지난 게시글에 TDD와 BDD에 대해서 학습하였다. 이를 적용하기 위해 테스트 코드를 작성하였으며 BDD 방식으로 진행하였다.Member 관련 테스트 코드MemberServiceTest.java...@RunWith(SpringRunner.class)@SpringBootTest@Transactionalclass MemberServiceTest { @Autowired MemberService memberService; @Test void 회원가입() { // given Member member = new Member(); member.setEmail("test@test.com"); member.setAddress(new Ad.. 2025. 1. 23.
[JPA로 게시판 만들기] TDD, BDD 란 시작하기 전에TDD, BDD 등 테스트 코드 작성 관련 얘기를 주변에서 많이 들었다. 강의를 들으며 진행한 것 외에 스스로 생각하며 진행해본적이 없기 때문에 진행해보았다. 구현한 테스트 코드 설명에 앞서 TDD와 BDD가 무엇인지 먼저 이해하고 시작하기로 하였다.TDD(테스트 주도 개발)Test Driven Development의 약자로 테스트가 개발을 주도한다는 개념으로 사용된다. TDD는 테스트를 먼저 만들고 테스트를 통과하기 위한 행동들이 모두 개발을 주도하는 것을 목표로 한다. TDD에서는 보통 개발이 끝난 후 테스트를 하는 과정과 다르게 테스트 코드를 먼저 만들고 테스트 코드를 통과시키기 위해 개발코드를 만들어가면서 개발을 진행한다. 추가로 TDD의 결과물이 단위테스트일 뿐 TDD와 단위테스트는.. 2025. 1. 23.