목록분류 전체보기 (33)
공부하는 블로그

객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회(지연 로딩)할 수 있다. 하지만 자주 함께 사용되는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적(즉시 로딩)이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 지연 로딩어떤 엔티티를 데이터베이스에서 조회할 때 연관된 엔티티들을 함께 조회하지 않고, 만약 그 연관된 엔티티가 실제 사용되는 시점까지 조회를 지연하는 방법. 프록시 객체 지연 로딩을 사용..
개념을 제대로 안 익힌 것인지 새로운 걸 학습할 때마다 머릿속에 있던 개념들이 흐려져가서 다시 정리 엔티티엔티티는 데이터베이스 테이블에 매핑되는 클래스. 다른 엔티티와의 연관관계, 상태 전이를 관리할 수 있다. 즉, 데이터베이스 테이블과 일대일로 매핑되는 객체로서, 데이터베이스의 레코드를 자바 객체로 표현한 것. 선언할 때는 JPA 어노테이션 @Entity로 선언, 각 필드는 테이블의 각컬럼에 매핑됨. 영속성 컨텍스트엔티티 객체를 관리하는 일종의 '저장소'. 엔티티 객체의 생명 주기를 관리하며, 엔티티와 데이터베이스 사이의 상태를 동기화.영속성 컨텍스트는 데이터베이스 그 자체가 아니며 일종의 캐시와 같은 역할을 함. 주요 역할1) 엔티티 저장 : persist() 메서드를 통해 엔티티를 영속성 컨텍..

JPA가 제공하는 기능은 크게 (엔티티와 테이블)을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 볼 수 있다. 여기서 매핑한 엔티티를 실제 사용하는 부분이 엔티티 매니저이다. 엔티티 매니저 : 엔티티를 저장하는 가상의 데이터 베이스 엔티티 매니터 팩토리는 여러 쓰레드에서 동시에 접근해도 안전하지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로, 쓰레드간에 절대 공유하면 안 된다. 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경 em.persist(member) 엔티티 매니저를 통해 회원 엔티티를 영속성 컨텍스트에 저장한다. 엔티티 생명주기 : 비영속(new) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상..
스프링 관련 글들을 볼 때 많이 봤던 IoC와 DI를 공부하게 되었다. 1. 좋은 코드란?논리가 간단해야함. 중복되는 코드를 제거하고 표현이 명확해야 한다. 누구나 쉽게 수정할 수 있게 가독성이 좋아야 한다. 의존성을 최소화 한다.(느슨한 결합)기능을 추가하더라도 크게 구조의 변경이 없어야 한다. IoC와 DI를 활용하면 이러한 좋은 코드를 짤 수 있다고 한다. 2. 디자인 패턴과 설계 원칙 디자인 패턴 : 소프트웨어에서 자주 발생하는 문제들을 해결하기 위한 재사용 가능한 솔루션 설계 원칙 : 소프트웨어 시스템을 설계할 때 따라야 할 일반적인 규칙이나 가이드라인 여기서 IoC는 디자인 패턴이고 DI는 설계 원칙이고, DI 패턴을 사용해서 IoC 설계원칙을 구현하고 있다. 3. DI(Dependency..

간단한 메모장 CRUD를 구현하기 위해 사용자의 요청을 서버가 담아서(Post) 다시 반환하는 과정(Get)을 학습했다. 먼저 DTO라는 개념이 있는데, DTO (Data Transfer Object) 데이터 전송 및 이동을 위해 생성되는 객체를 의미한다, Client에서 보내오는 데이터를 객체로 처리할 때 사용된다, DB와의 소통을 담방하는 Java 클래스(Entity)를 그대로 Client에 반환하는 것이 아니라 DTO로 한 번 변환한 후 반환할 때도 사용된다. 예를 들어 메모장에 이름, 내용을 적고 등록 버튼을 누르면 RequestDto의 username, contents 필드에 해당 값들이 담아진다. 그리고 이를 서버에서 DB와 연결된 Entity에 넘겨줘서, DB에 저장을 하게된다. 그리..

Spring MVC에 대한 강의를 듣는데, Servlet, Controller에 대한 개념이 제대로 잡히지 않아서 전체적으로 정리를 해보려고 한다. 디자인 패턴이란? 소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위해 만들어진 일반적인 해결책이다. 즉, 디자인 패턴은 특정한 묹제를 해결하기 위한 최적의 방법을 미리 정의해 둔 '템플릿'이라고 할 수 있다. MVC 디자인 패턴이란? Model-View-Controller 디자인 패턴의 약자로, 하나의 소프트웨어 애플리케이션을 세 부분(Model,View,Controller)으로 나누어 개발한다는 뜻이다. 모델(Model) : 데이터와 비즈니스 로직을 담당한다. 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행한다. ..