전체 글

1. 영속성 컨텍스트객체와 관계형 데이터베이스를 매핑(ORM)하는 것과 영속성 컨텍스트를 이해하는 것이 JPA 공부의 핵심이다. 영속성 컨텍스트를 이해하면 JPA가 내부에서 어떻게 동작하는지 이해할 수 있다. 영속성 컨텍스트란 엔티티를 영구적으로 저장하는 환경이라는 뜻이다. 예를 들어 EntitiyManager.persist(entity); 코드를 통해 엔티티를 영속화(영속성 컨텍스트에 저장)할 수 있다. 아래에서 더 자세히 알아보자.  엔티티 매니저 팩토리와 엔티티 매니저웹 애플리케이션을 개발한다고 하면, 고객의 요청이 올 때마다 EntityManagerFactory를 통해 EntityManager를 생성해 배치한다. EntityManager는 내부적으로 데이터베이스 커넥션풀을 사용해 DB와 통신한다...
[JWT를 활용한 로그인, 로그아웃, 회원탈퇴 API 구현 방법]에 대해 설명하기 전, 공식 문서를 보면서 Spring Security의 기본 개념(Filter)에 대해 학습해보려고 한다. API를 구현할 때 사용한 자바, 스프링 부트, 라이브러리 버전은 아래와 같다.Java: 17Spring Boot: 3.3.1Spring Security: 6.1.9 → 공식 문서 버전도 동일 Spring Security 기본 개념Spring Security란?Spring Security는 인증 및 인가, 보안을 위해 사용하는 프레임워크로, 자바 8 이상인 환경에서만 동작한다. build.gradle 의존성에 아래 한 줄을 추가하면 사용할 수 있다.추가하고 localhost:8080에 접속하면 로그인 화면이 뜨게 된다..
[스프링 부트와 JPA 활용1] 강의는 원래 이번 강의를 듣고 이론을 학습한 뒤 실습을 진행하는 내용이다. 추천 로드맵을 보면 실습 - 이론 - 실습(복습)으로 진행하는 게 더 효율적이라길래 따라하고 있다. 이번 섹션에선 JPA 이론을 학습하기 전, JPA의 필요성과 기능에 대해 설명한다. JPA와 모던 자바 데이터 저장 기술 1. SQL 중심적인 개발의 문제점SQL에 의존하는 개발애플리케이션을 개발할 땐 보통 Java나 Scala, C# 같은 객체 지향 언어를 사용하고, Oracle이나 MySQL 같은 관계형 데이터베이스(RDB)에 데이터를 저장한다.객체를 영구 보관하는 저장소는 RDB 말고도 NoSQL, File 등으로 다양하다. 그러나 현실적인 대안으로는 주로 RDB를 사용한다.객체를 RDB에 저장..
JWT를 활용한 인증 및 인가(로그인, 로그아웃, 회원탈퇴) 기능 구현 방법에 대해 작성하기 전, 기본 개념부터 정리해두려고 한다. 사실 완벽하게 이해하고 구현했다기보단 최소한의 필요한 게 뭔지 정도만 알고 구현했던 거라... 다른 프로젝트에서 기능(ADMIN, USER 구분 등)을 추가해야 된다거나 할 때 자신 있게 수정할 수 있을 때까지 이해하는 게 목표다. 🔥 HTTP 기본 개념서버와 클라이언트 사이의 모든 Request와 Response는 HTTP를 기반으로 동작한다. 1. 무상태 프로토콜 - Stateless서버가 클라이언트의 이전 상태를 보존하지 않는다.따라서 클라이언트는 요청 시 서버에 필요한 모든 정보를 제공해야만 응답을 받을 수 있다.서버는 상태를 보존할 필요가 없기 때문에 클라이언트 ..
이후 섹션들은 라이브 코딩을 따라하면서 회원, 상품, 주문 도메인과 웹 계층을 개발하기 때문에 강의 중 새롭게 학습한 개념이나 실무에 적용할 수 있는 팁들만 작성하려고 한다. 1. 도메인 개발화면(웹 계층) 개발은 뒤로 미루고 핵심 비즈니스 로직부터 개발한다. 리포지토리 - EntityManager@PersistentContext 애노테이션을 사용하면 스프링이 알아서 SpringEntityManger를 주입해 준다. @Autowired 애노테이션을 적어도 가능하다. em.persist()영속성 컨텍스트에 저장, 트랜잭션이 커밋되는 시점에 DB에 반영(INSERT), Key:Value=PK:Entityem.find()타입과 PK를 파라미터로 받는 조회 메서드em.createQuery()JPQL과 타입을 넣..
🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명각자 API를 구현하던 중 팀원분이 [응답 통일 및 에러 핸들러]를 구현해서 PR을 올려주셨다. API 역할 분배할 때 되도록이면 엔티티별로 나눠놔서 내가 맡은 Transmission 부분을 끝내고 다음날 아침에 pull을 받았다. 충돌 좀 해결하고 Swagger로 테스트하려고 했는데, Swagger에 접속하면 Failed to load API definition.라는 문구와 함께 아래 화면이 뜨는 오류가 발생했다. 설명을 보면 API 정의해 둔 걸 로드하는 데 실패했다는 뜻이고, 응답 상태가 500이면 Server Error인 거라 localhost:8080/v3/api-docs 경로로 접속해 봤지만 에러에 대한 자세한 설명..
JPA에 대한 개념 설명(이전 강의)을 듣지 않고 이번 강의를 먼저 들으면서 JPA 활용부터 공부하고 있다. 따라서 이해가 되지 않는 부분이 엄청 많기 때문에 설명이나 코드는 이해한 부분만 적고 넘어가려고 한다. 나중에 JPA 개념 강의를 듣고 다시 복습하면서 설명을 채워 넣을 예정이다. 1. 도메인 모델과 테이블 설계요구사항 분석간단한 쇼핑몰을 만들어 볼 예정이다. 핵심 기능은 아래와 같다.회원 기능회원 등록 (POST)회원 목록 조회 (GET)상품 기능상품 등록 (POST)상품 수정 (PATCH || PUT)상품 목록 조회 (GET)주문 기능상품 주문 (POST)주문 내역 조회 (GET)주문 취소 (DELETE)기타 요구사항상품은 재고 관리가 필요하다.상품의 종류는 도서, 음반, 영화가 있다.상품을 ..
데이터베이스 강의를 2학년 2학기에, 고급데이터베이스 강의를 3학년 1학기에 수강했지만, 쿼리를 직접 작성할 일도 크게 없기도 하고 배운 지 1년쯤 지나버려서 기억이 날아가고 있었다. 휴학하고 자격증 하나쯤은 따볼까 생각하고 있었는데 전공 지식도 복습할 겸 SQL 개발자 자격증 시험을 봤다.개발자 취업 시장에서 자격증은 크게 의미가 없다곤 하지만, 전공 개념을 복습하면서 그걸 정량적인 스펙으로 남길 수 있다고 생각하고 2주 정도 공부했다. 아래엔 전공자 기준으로 어떻게 준비하면 좋을지, 기간은 얼마나 잡아야 할지에 대한 정보를 기록해두려고 한다. 1. SQLD 자격증 시험 정보제55회 SQL 개발자(SQLD)원서 접수- 24.10.14. 월 10:00 ~ 24.10.18. 금 18:00시험일- 24.11..
dev-meung
IT::Coding