본문 바로가기

전체 글156

1주차. 데이터베이스 & 관계형 데이터베이스 기본 개념 1. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요.파일시스템에서는 데이터를 파일로 관리합니다. 데이터를 파일로 관리할 경우 중복이 발생할 수 있고 일관성이 깨질 수 있습니다.반면, 데이터베이스에서는 데이터를 DBMS을 통해 관리합니다. DBMS를 통해 데이터의 중복을 방지하고 일관성을 유지할 수 있습니다. 또한 여러 사용자가 동시 사용할 수 있고 데이터 복구나 보안성까지 제공합니다.  파일 시스템데이터베이스 시스템데이터 구조데이터를 계층 구조의 디렉토리와 파일로 구조화논리적으로 연관된 데이터를 모아 구조화하며,DBMS를 사용하여 데이터를 관리일관성과 무결성또한 각 응용 프로그램 별로 독립된 파일을 가지므로 제이터의 중복 저장이 불가피하며, 데이터가 수정될 때 이로 인한 불일치 발생 가능ACI.. 2023. 11. 8.
6. 주문 도메인 개발 1. 도메인 모델 패턴 vs 트랜잭션 스크립트 패턴 도메인 모델 패턴 - Entity에 비즈니스 로직을 구현 - Service 계층은 주로 엔티티에 필요한 요청을 위임하는 역할 - Entity에 대한 테스트를, 데이터베이스나 JPA와 관계없이 쉽게 만들 수 있음. ex. (실무에서는) Item Entity에 대한 removeStock() 메서드의 단위테스트를 만들어주는 게 낫다. 트랜잭션 스크립트 패턴 (일반적인 SQL 패턴) - Service 계층에 비즈니스 로직을 구현 - Entity는 단순하게 데이터를 전달하는 역할 정리 - 프로젝트의 성격과 요구사항에 따라 선택할 수 있다. - 도메인 모델 패턴은 객체지향적이며 엔티티 중심의 설계를 지향, 엔티티의 비즈니스 로직을 명확하게 표현할 때 유용하다. -.. 2023. 11. 7.
5. 상품 도메인 개발 객체지향적 프로그래밍 [도메인 주도 설계] (ex. OrderService : 비즈니스 로직 ) - Service에서 엔티티를 가져와서 비즈니스 로직을 작성하기보다는, Entity의 핵심 비즈니스 로직을 해당 엔티티 내에 존재하게 코드를 작성한다. 즉, Service는 비즈니스 로직을 호출하는 역할만 한다. (ex. ItemService, MemberService : DB 로직) - Service는 Repository에 위임만 하는 형식이다. 간단한 경우에는, Controller에서 바로 Repo에 접근해서 Service(DB 로직)을 실행해도 되는지에 대해서, 잠깐 고민해보자! → Controller는 요청을 처리하고 적절한 Service를 호출하고, DB 로직을 실행하는 것이 객체지향적 Service.. 2023. 11. 6.
4. 회원 도메인 개발 1. SQL vs JPQL sql : 테이블을 대상으로 쿼리 jpql : 엔티티를 대상으로 쿼리 2. 트랜잭션, @Transactional(readOnly = "") 트랜잭션 : 데이터를 추가, 변경할 때 트랜잭션 안에서 실행되어야 한다. @Transactional javax : Java EE에서 제공하는 JTA를 사용하여 트랜잭션 관리 spring : DB 트랜잭션을 관리하는 데 사용 @Transactional(readOnly = true) defalut = "false" readOnly : 트랜잭션에 읽기 전용 모드 설정 → 성능 최적화, DB 변경 방지 *쓰기 작업에서 readOnly = true 로 설정 시, 데이터 수정이 안 된다. 3. 트랜잭션과 영속성 컨텍스트, @Transcational(r.. 2023. 11. 6.
3. 애플리케이션 구현 준비 애플리케이션 아키텍처 1) 계층형 구조 - controller : 웹 계층, 사용자의 웹 요청(request)을 받아들이고 응답(response)을 제공한다. - service : 비즈니스 로직을 처리하고 트랜잭션을 관리한다. 요구사항을 구현하며, 데이터를 가공하여 도매인 객체를 조작한다. - repository : 데이터베이스와 직접 상호작용 한다. 데이터베이스 연결, 쿼리 작성, 데이터 검색 및 업데이트를 처리한다. 데이터베이스 관련 작업을 추상화 한다. - domain : 엔티티 및 비즈니스 객체가 모여있는 계층이다. 애플리케이션의 핵심 도메인 객체를 정의하고 관리한다. 2) 패키지 구조 2023. 11. 6.
8. 프록시와 연관관계 관리 1. 프록시 1) 프록시 기초 - em.find() vs em.getReference() - em.find() - 데이터베이스를 통해서, 실제 엔티티 객체 조회 - em.getReference() - 데이터베이스 조회를 미루는, 가짜(프록시) 엔티티 객체 조회 2) 프록시 특징 - 실제 클래스를 상속 받아서 만들어짐 → 타입 체크시 주의해야 한다. (== 비교보다는, instance of 사용) - 프록시 객체는 실제 객체의 참조(target)를 보관 - 프록시 객체를 호출하면, 프록시 객체는 실제 객체의 메소드 호출 (프록시 객체에 위임, delegate) - 프록시 객체는 처음 사용할 때, 1번만 초기화 - 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. → 프록시 객체.. 2023. 9. 4.