분류 전체보기

    [3-2] 영속성 컨텍스트의 이점 (+Batch)

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 영속성 컨텍스트의 이점 1. 1차 캐시 저장 Entity를 영속성 컨텍스트에 저장할 때, EntityManager가 Entity를 영속성 컨텍스트의 1차 캐시에 저장한다. em.persist(member)이후 find를 넣었는데 쿼리는 commit할 때 나간다. DB단에서 조회해오지 않고, 1차 캐시에서 조회해 오기 때문. // 비영속 Member member = new Member(); member.setId(101L); member.setName("HelloJPA"); //영속 System.out.println("=== BEFORE ==="); em.persist(member); System.out.println("=== AFTER =..

    [3-1] 영속성 컨텍스트란?

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 영속성 컨텍스트(JPA가 내부에서 어떻게 동작하는가) EntityManagerFactory와 EntityManager 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity); DB에 저장 X, 영속성 컨텍스트를 통해서 Entity를 영속화한다.는 뜻. 좀 더 정확히 말해서 영속성 컨텍스트에 entity를 저장한다는 것 EntityManager? 영속성 컨텍스트? 영속성 컨텍스트는 논리적인 개념이고, 눈에 보이지 않는다 EntityMan..

    [WIL] 230626 ~ 230702

    목표 달성 여부 ❓ 스프링 과제 잘 하기 ✅ 스터디 진행 잘하기 ✅ TIL 비공개라도 기록 잘 해놓기(주말에 수정 하면 된다.) 이번 주 내가 한 것 1. 스프링 강의 듣고 과제 제출 * ERD(Entity Relationship Diagram) * 제출 깃허브 GitHub - JisooPyo/Spring-Blog-Assignment Contribute to JisooPyo/Spring-Blog-Assignment development by creating an account on GitHub. github.com 2. 스터디 진행 프로그래머스 문제를 정하여 월, 수, 금 정해진 시간에 한 명이 발표하고, 다르게 푼 사람이 추가 발표를 하고, 다 같이 풀 리퀘스트로 코드 리뷰를 하였다. 회고 뭔가.. 따..

    [2-1] JPA 시작하기

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 데이터베이스 방언 JPA는 특정 데이터베이스에 종속되지 않는다. 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다. 방언 : SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 어플리케이션을 설정할 때, 어떤 방언으로 변환하여 쿼리를 날려야 할지 정해 줄 수 있다. hibernate는 40가지 이상의 데이터베이스 방언을 지원한다. ex. H2 데이터베이스 쿼리로 바꿔서 날려줘~ JPA 구동 방식 Persistence가 MeTA-INF/persistence.xml에서 설정 정보를 조회 Persistence가 EntityManagerFactory 생성 EntityManagerFactory가 EntityManager 생..

    [ Spring ] Trillion 조 - Exercise Blog Project 시작!

    [ Spring ] Trillion 조 - Exercise Blog Project 시작!

    기능 구현해야 할 필수 기능 더보기 사용자 인증 기능 - 회원가입 기능 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다. 이 때, 비밀번호는 안전하게 암호화되어 저장되어야 합니다! - 로그인 및 로그아웃 기능 사용자는 자신의 계정으로 서비스에 로그인하고 로그아웃할 수 있어야 합니다. 프로필 관리 - 프로필 수정 기능 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다. 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다. 게시물 CRUD 기능 - 게시물 작성, 조회, 수정, 삭제 기능 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 ..

    [1-2] JPA 소개

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 JPA란? Java Persistence API 자바 진영의 ORM 기술 표준 ORM : Object-relational mapping(객체 관계 매핑) 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계 ORM 프레임워크가 중간에서 객체와 관계형 DB를 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA를 왜 사용해야 하는가? SQL 중심적 개발에서 객체 중심 개발로! 1. 생산성 기존 Entity를 쿼리 문이 아니라 간단한 메서드로 필요한 작업을 수행할 수 있다. persist(), find(), set(), remove() 2. 유지보수 예전에는 필드 변경시 모든 쿼리를 수정하여야 했는데, JPA에서는 필드 변경만 해주면 쿼리..

    [1-1] JPA가 나오게 된 배경 - SQL 중심적인 개발의 문제점

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 보통 애플리케이션을 개발할 때는 객체 지향 언어로 개발한다.(Java, Python, Scala, ...) 데이터베이스를 사용할 때는 보통 관계형 DB를 많이 사용한다. NoSQL은 부가적으로 사용하는 경우가 많다. 그러면 객체를 관계형 데이터베이스에 저장하는 것이 필수적인 작업이다. 객체를 관계형 데이터베이스에 저장하려면 SQL을 이용하여 저장하여야 한다. SQL 중심적인 개발의 문제점 SQL을 이용하여 저장할 때, 한 객체에서 필드 하나만 추가 되어도 쿼리 문이 많이 복잡해진다. 객체와 관계형 데이터베이스는 비슷하면서도 다르다. 1. 상속 Table 슈퍼타입 서브타입 관계 -> 부모의 ID를 PK, FK로 가져와서 필요할때마다 Join..

    [TIL] 프로그래머스 - 같은 숫자는 싫어 (GPT 첫 개시!)

    문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..

    [TIL] UnsatisfiedDependencyException : Unsatisfied dependency expressed through constructor parameter 0 해결하기

    스프링부트로 MemoApplication을 실행시켰더니 발생한 예외 내용 예외 내용(길다...) org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoController' defined in file [D:\memo\build\classes\java\main\com\sparta\memo\controller\MemoController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'memoService' defined in file [D:\me..

    [TIL] java.lang.IllegalStateException 해결하기

    영속성 컨텍스트의 기능 중 1차 캐시 저장을 Test해보려고 했는데, 객체를 데이터베이스에 저장하려는 과정 중 java.lang.IllegalStateException: Cannot get a connection as the driver manager is not properly initialized 오류 발생. 뭐가 문젠지 몰라서 일단 파일을 엎고 다시 만들었는데, 연결되어 있어야 할 데이터베이스가 없어져 있었다. 아까 table을 드롭한다는게 database를 drop을 해서 객체를 데이터베이스에 저장하려고 하니까 오류가 난 것 같았다. 데이터베이스를 다시 create 해준 뒤, 같은 코드로 실행시켰더니 멀쩡히 잘 실행이 되었다. 진작에 알았으면 안 엎었지... ㅠ0ㅜ...