
💡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..

💡JPA란? Java Persistence API 자바 진영의 ORM 기술 표준 💻 ORM이란? Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하면, ORM 프레임워크가 중간에서 매핑해준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. 💻 JPA 동작 방식 JPA는 애플리케이션과 JDBC 사이에서 동작한다. JPA의 동작 과정 Java 애플리케이션에서의 호출: Java 애플리케이션은 JPA API를 호출한다. JPA의 처리: JPA는 이 요청을 받아 내부적으로 JDBC API를 호출한다. JDBC를 통한 SQL 실행: JDBC는 필요한 SQL을 생성하고 실행한다. 데이터베이스에서의 결과 반환: 실행된 SQL..

💡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)가 있어서 해당 작업이 실패한 것이다. 즉 로그인한 회원이 게시글을 쓴 상태에서 탈퇴를 하려니, 게시글에서 회원의 정보를 외래키로 갖고 있기 때문에 게시글 - 회원 간 제약조건을 설정하지 않으면 회원의 정보를 지울 수 없다(회원 탈퇴..

1️⃣ 💦문제💦 스프링부트3 자바 백엔드 개발 입문 댓글 조회하기에서 기사 조회할 때랑은 다르게 왜 엔티티에서 DTO로 변환하는지 잘 모르겠다.. 기사 조회할 때랑 똑같이 그냥 commentRepository.findByArticleId(articleId);만 해주면 되는 것 아닌가? 🌟해결🌟 엔티티를 반환하지 않고 DTO를 반환하는 이유는 엔티티와 응답을 따로 운용하는 것에서부터 출발한다. 엔티티에는 A라는 필드가 있지만, 응답에서 A라는 필드를 보여주고 싶지 않다면 어떨까? 엔티티에는 B라는 값이 없는데, 응답에서는 B라는 값을 보여주고 싶으면 어떻게 해야할까? 이 두 가지를 동시에 충족시켜 줄 수 있는것이 DTO이다. DTO는 외부로 나가는 데이터를 보안적인 측면에서 관리할 수 있으며, 엔티티에 값..

💡회원 웹 기능 - 홈 화면 추가💻 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 회원 기능 ..
- Total
- Today
- Yesterday
- 커뮤니티
- 스프링 북마크
- 자바
- 북마크
- 로깅
- 웹 MVC
- 회원탈퇴
- 스프링 커뮤니티
- 백준
- 준영속
- DP
- 스프링
- SQLD
- 인텔리제이
- 백준 파이썬
- 스프링부트
- elasticsearch
- 영속
- SQL
- SQL 레벨업
- 웹MVC
- 지연로딩
- 로그아웃
- 파이썬
- 프론트엔드
- 비영속
- 다이나믹 프로그래밍
- EnumType.ORDINAL
- JPA
- 자바 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |