
* 영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에 있는 중간 계층이다. - 이렇게 중간 계층을 만들면 버퍼링, 캐싱 등을 할 수 있다. 1차 캐시 - 영속성 컨텍스트에는 1차 캐시가 존재하며 Map 로 저장된다. - entityManager.find() 메소드 호출 시 영속성 컨텍스트의 1차 캐시를 조회한다. - 엔티티가 존재할 경우 해당 엔티티를 반환하고, 엔티티가 없으면 데이터베이스에서 조회 후 1차 캐시에 저장 및 반환한다. 동일성 보장 - 하나의 트랜젝션에서 같은 키값으로 영속성 컨텍스트에 저장된 엔티티 조회 시 같은 엔티티 조회를 보장한다. - 이는 1차 캐시에 저장된 엔티티를 조회하기 때문에 가능하다. 트랜젝션을 지원하는 쓰기 지연 - 영속성 컨텍스트에는 쓰기 지연 SQL 저장소가 존재한..

엔티티 (Entity) : 엔티티란 데이터베이스의 테이블에 대응하는 클래스이다. @Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다. 데이터베이스에 item 테이블을 만들고 이에 대응 되는 item 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 되는 것. 클래스 자체나 생성한 인스턴스도 엔티티라고 부른다. 엔티티 매니저 팩토리 (Entity Manager Factory) : 엔티티 매니저 인스턴스를 관리하는 주체 - 애플리케이션 실행 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성한다. 엔티티 매니저 (Entity Manager) : 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공한다. - 내부적으..

Entity Post TimeStamped @Entity @Getter @NoArgsConstructor public class Post extends TimeStamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String writer; private String password; private String content; // public Board() {} // 기본 생성자는 반드시 있어야 한다. public Post(String title, String writer, String password, String content) { this.title = tit..
Entity Post @Entity @Getter @NoArgsConstructor public class Post extends TimeStamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String writer; private String password; private String content; // public Board() {} // 기본 생성자는 반드시 있어야 한다. public Post(String title, String writer, String password, String content) { this.title = title; this.wri..
Spring 입문 주차 개인 과제 🏁 Goal: "스프링 부트로 로그인 기능이 없는 나만의 항해 블로그 백엔드 서버 만들기" 학습 과제를 끝내고 나면 할 수 있어요! Java를 활용하여 필요한 클래스를 구상할 수 있어요. Lombok과 JPA를 이용하여 원하는 데이터베이스를 만들고 활용할 수 있어요. Spring Boot를 기반으로 CRUD(Create, Read, Update, Delete) 기능이 포함된 REST API를 만들 수 있어요. 🤔 notification : 과제 주의사항 entity를 그대로 반환하지 말고, DTO에 담아서 반환해주세요! 프론트엔드와 백엔드가 느슨하게 결합하는 환경이 ”최근에는” 더 일반적이라고 말씀드렸죠? 앞으로 남은 강의 예제와 실습에서는 html/css/js 즉 뷰도..
LinkedList (2) public class _05_LinkedList { public static void main(String[] args) { // 링크드 리스트 // 여러명이 앉을 의자가 있다고 가정한 설명 /* 먼저 어레이리스트는, 여러명이 앉을 의자가 연달아 있으면, 중간에 누가 앉으려고 한다면 그 사람의 위치로부터 그 사람 뒤에 있는 사람들이 모두 일어나서 한 칸씩 이동해야 하는 번거로움이 있다. 링크드 리스트는 의자 없이 사람들이 나란히 손을 잡고 있는 상황이다. 중간에 한 명이 2-3번 사이로 들어간다고 하면, 잡았던 손을 놓고, 그 사이에 들어가고 나서 기존에 2-3번에 있는 사람과 손을 잡으면서 쉽게 여러 사람들 사이로 들어갈 수 있다. 그냥 손을 놨다가 새로 들어온 사람과 손을..

목차 객체지향 문법 1 # 클래스 - 클래스가 필요한 이유 - 클래스 멤버 - static # 객체 - 객체의 비교 - 객체 멤버 # 생성자 - 생성자가 필요한 이유 - 기본생성자 클래스는 설계도 객체는 만들어 낸 대상 클래스는 무엇인가? 클래스 : 변수와 함수의 모음 클래스가 가지고 있는 변수 = 필드 클래스가 가지고 있는 함수 = 메서드 class Person { String name; void sayHello() { System.out.println("Hello, I'm + this.name); } } 여기서 Person 클래스는 name이라는 변수와 sayHello() 라는 함수를 가지고 있다. 일단 현실의 문제를 푸는 건데, 현실의 문제를 푼다는 건 현실 세계에 있는 대상을, 정보를 어쨌든 코드..
LinkedList(2), HashSet, HashMap, Iterator(1) 컬렉션 프레임워크라고 함은 많은 데이터를 효과적으로 쉽고 편리하게 관리하기 위해서 자바에서 제공해주는 어떤 클래스들의 모음 컬렉션 프레임 워크에서는 데이터를 저장하는 자료구조에 따라 다음과 같은 주요 인터페이스를 정의하고 있음 List 인터페이스 Set 인터페이스 Map 인터페이스 Iterator 데이터 처리하는 방법과 문법에 대해 바로 익힌다. LinkedList(2) import java.util.LinkedList; public class _05_LinkedList { public static void main(String[] args) { // 링크드 리스트 LinkedList list = new LinkedList(..