💡JPA 애플리케이션 개발💻 JPA 구동 방식package hellojpa;import jakarta.persistence.*;import java.util.List;public class JpaMain { public static void main(String[] args) { //엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //엔티티 매니저 생성 EntityManager em = emf.createEntityManager(); //트랜잭션 EntityTransaction t..
💡SQL 중심적인 개발의 문제점 반복적인 CRUD 쿼리 작성 및 수정 지속적으로 CRUD 쿼리를 작성하고 수정하는 반복적인 작업이 필요하다. 자바 객체와 SQL 간의 변환 자바 객체를 SQL 문으로 변환하고, SQL 결과를 다시 자바 객체로 매핑하는 과정이 반복된다. 💻 패러다임의 불일치 객체와 관계형 데이터베이스의 차이 상속 연관관계 데이터 타입 데이터 식별 방법 1. 상속 객체: 객체는 상속 구조를 명확하게 가지고 있다. 관계형 데이터베이스: 관계형 데이터베이스는 슈퍼타입 - 서브타입 관계를 사용하여 상속과 유사한 구조를 모델링 하지만, 진정한 상속 관계는 아니다. 문제 발생 Album 객체 저장: Album 객체를 저장하려면, Album과 상위 클래스인 Item으로 분해하여 두 개의 INSERT 문..
sopt 세미나를 마치고, 객체를 생성하는 방법 중 정적 팩토리 메서드 패턴과 필더 패턴을 배웠는데, 이 둘의 차이점이 무엇인지 자세하게 알기 위해 글을 작성하게 되었다. 사실 이 글을 작성하게 된 가장 큰 이유는.. 지금까지는 정적 팩토리 메서드 패턴만을 사용했는데, 빌더 패턴은 사용해본적이 없어서 이 둘의 차이점을 확실히 알고 두 가지 방법을 적절한 상황에 효과적으로 사용해보고 싶어서이다.ㅎ 객체를 생성하는 방법에는 여러가지가 있지만, 그 중 두가지 주요 방법으로 정적 팩토리 메서드와 빌더 패턴이 있다. 이 두 방법은 객체를 생성하고 초기화하는 과정에서 각각 고유의 장점을 제공한다. 0. new 키워드로 객체 생성MyClass obj = new MyClass(); new 키워드의 장점1) 간단하다.n..
이번엔 게시글 조회가 안되네,,? 그런데 이번엔 회원 탈퇴처리를 한 후에 게시글을 조회해봤더니 NullPointerException이 발생하였다..... 회원이 탈퇴함에 따라 게시글과 연결된 회원 정보가 'null'로 설정된 것 까지는 잘 했는데,,, 이 상황에서 발생한 NullPointerException 오류는 게시글을 조회하는 과정에서 해당 게시글을 작성한 회원의 정보를 참조하려고 했으나, 회원 정보가 이미 'null'로 설정되어 있기 때문에 발생한 것이다. 즉 회원 정보가 'null'이 될 수 있다는 점을 체크하지 않고 회원 정보가 있을 때만을 고려하여 (null이 아닐 때만을 고려하여) 코드 구현을 했기 때문이다..!! trace를 보니 DTO 변환 로직을 수정해야 함을 알 수 있었다. 즉 Ar..
회원로직, 게시글 crud, 댓글 crud까지 다 구현한 후에 포스트맨으로 전체적으로 한 번씩 확인을 해주었다. 회원탈퇴 오류 근데... 회원로직만 테스트했을 땐 잘 됐던 회원탈퇴가 갑자기 이런 오류가 뜨면서 안됐다..ㅜㅜ trace를 잘 읽어보니 외래키 제약조건과 관련된 문제였다. member 테이블에서 member_id를 기반으로 한 행을 삭제하려고 시도했으나, article 테이블에 member_id를 참조하는 외래 키(FK6l9vkfd5ixw8o8kph5rj1k7gu)가 있어서 해당 작업이 실패한 것이다. 즉 로그인한 회원이 게시글을 쓴 상태에서 탈퇴를 하려니, 게시글에서 회원의 정보를 외래키로 갖고 있기 때문에 게시글 - 회원 간 제약조건을 설정하지 않으면 회원의 정보를 지울 수 없다(회원 탈퇴..
//중복회원 확인 private void validateDuplicateMember(SignupDto signupDto) { Long count = memberRepository.countByEmail(signupDto.getEmail()); if (count > 0) { // 중복된 이메일이 존재하는 경우 예외 발생 throw new DuplicateMemberException("이미 존재하는 회원입니다."); } } //로그인 public Member login (LoginDto loginDto) { Member member = memberRepository.findByEmail(loginDto.getEmail()); if (member == null) throw new MemberNotFoundEx..
💡회원 웹 기능 - 홈 화면 추가💻 HomeControllerpackage hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } }http://localhost:8080/ 을 치고 들어가면 home 메서드를 호출하고, return "home";을 통해 home.html파일을 불러온다. 💻home.html Hello Spring 회원 기능 ..
💡컨포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비한다. MemberController가 MemberService를 통해 회원가입하고, 데이터 조회할 수 있어야 하는데, 이것을 MemberController가 MemberService를 의존하는 '의존관계'에 있다고 한다. 💻MemberController 생성 package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.C..
- Total
- Today
- Yesterday
- 다이나믹 프로그래밍
- 로그아웃
- SQLD
- EnumType.ORDINAL
- 스프링 커뮤니티
- 지연로딩
- DP
- SQL
- 스프링부트
- 영속
- 준영속
- 로깅
- JPA
- 웹MVC
- 커뮤니티
- 북마크
- 프론트엔드
- 비영속
- SQL 레벨업
- 자바
- 웹 MVC
- 백준 파이썬
- 파이썬
- 인텔리제이
- 자바 스프링
- 스프링 북마크
- elasticsearch
- 백준
- 스프링
- 회원탈퇴
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |