전체 글156 1. JPA 소개 1. SQL 중심적인 개발의 문제점 1) 객체 지향 언어 & 관계형 데이터베이스 - 객체를 관계형 DB에 관리 아래 그림처럼, SQL에 의존적인 개발을 피하기 어렵다. 2) 객체와 관계형 데이터베이스의 차이 (1) 상속 객체 간의 상속 관계를 SQL 쿼리문으로 표현하려면 JOIN 연산을 사용해야 한다. 하지만, 상속 계층이 깊어질수록 JOIN 연산도 복잡해지며 상속 관계를 가진 객체들을 쿼리하려면 매번 JOIN 및 필터링을 수행해야 한다. (2) 연관관계 객체는 참조를 사용 : member.getTeam() 테이블은 외래 키를 사용 : JOIN ON M.TEAM_ID = T.TEAM_ID (3) 데이터 타입 (4) 데이터 식별 방법 2. JPA 소개 1) JPA 개념과 동작 방식 JPA - Java Pe.. 2023. 8. 29. 2. 도메인 분석 설계 1. 요구사항 분석 1) 회원 기능 - 회원 등록 - 회원 조회 2) 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회 3) 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 4) 기타 요구사항 - 상품은 재고 관리가 필요하다. - 상품의 종류는 도서, 음반, 영화가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문시 배송 정보를 입력할 수 있다. 2. 도메인 모델과 테이블 설계 - 다대다 관계는 관계형 데이터베이스는 물론, 엔티티에서도 거의 사용하지 않는다. 따라서 '주문상품'이라는 엔티티를 추가해서 일대다, 다대일 관계로 풀어냈다. 3. 회원 엔티티 분석 - 실무에서는 회원이 주문을 참조하지 않고, 주문이 회원을 참조하는 것으로 충분하다. ('多'에서 '一'을 참조한다.) → .. 2023. 8. 16. 1. 프로젝트 환경설정 1. JUnit5 테스트 에러 이걸 보지않고, JUnit5으로 테스트하다가 1시간동안 테스트 오류 잡아내느라 힘들었다는... Tip. Build.gradle에 라이브러리 추가하자. (vscode의 live-server 같은?) 2. JPA와 DB 설정, 동작확인 1) spring.jpa.hibernate.ddl-auto: create - 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다. 2) show_sql: true - System.out에 하이버네이트 실행 SQL을 남긴다. 3) org.hibernate.SQL - logger를 통해 하이버네이트 실행 SQL을 남긴다. 4) org.hibernate.orm.jdbc.bind: trace - SQL 실행 파라미터를 로그로 남긴다. (쿼리.. 2023. 8. 16. 9. 빈 스코프 1. 빈 스코프 지금까지 공부한 스프링 빈은, 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. (scope : 빈이 존재할 수 있는 범위) 싱글톤 : 기본 스코프 프로토타입 : 스프링 컨테이너가 빈의 생성과 의존관계 주입까지만 관여하고, 더는 관리하지 않는 것 웹 관련 스코프 - request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 - application : 웹 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 2. 프로토타입 스코프 - 프로토타입 스코프의 빈을 조회하면, 스프링 컨테이너는 항상 새로운 인스턴스를.. 2023. 8. 10. 8. 빈 생명주기 콜백 1. 빈 생명주기 콜백 시작 애플리케이션에서 데이터베이스 커넥션 풀이나 네트워크 소켓과 같은 리소스를 애플리케이션의 생명주기에 맞춰서 초기화 및 종료 작업을 수행해야 할 경우 사용한다. 스프링 프레임워크는 빈의 라이프사이클 관리를 제공하여 이러한 작업을 간편하게 처리할 수 있게 도와준다. 스프링 빈의 라이프사이클 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에, 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업(객체 메서드 호출, 외부 커넥션 연결)은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. Q. 그런데 개발자가 의존관계 주입이 모두 완료된 시점을 어떻게 알 수 있을까?? A. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 .. 2023. 8. 10. 7. 의존관계 자동 주입 1. 의존관계 주입 방법 3가지 1) 생성자 주입 - 생성자를 통해서 의존관계를 주입하는 방법 - 특징 - 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. - 불변, 필수 의존관계에 사용 *중요! 생성자가 딱 1개만 있으면 @Autowired를 생략해도 (스프링 컨테이너에 등록된 빈 객체가) 자동 주입된다. 2) 수정자 주입 (setter) - setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법 - 특징 - 선택, 변경 가능성이 있는 의존관계에 사용 cf) @Autowired의 기본 동작은 주입할 대상이 없으면 오류가 발생한다. 주입할 대상이 없어도 동작하게 하려면 @Autowired(required=false) 로 지정하면 된다. 3) 필드 주입 - 외부에.. 2023. 8. 10. 이전 1 ··· 22 23 24 25 26 다음