일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 자바의정석
- 김영한
- 스프링MVC
- 항해플러스 회고
- 스프링
- 이것이자바다
- Java의정석
- 불친절한 SQL 프로그래밍
- Numpy
- 항해플러스 백엔드
- 스프링 부트와 JPA
- 스프링 핵심원리
- 자바공부
- Spring
- 시큐어코딩
- 서블릿
- 스프링입문
- 항해플러스
- 불친절한SQL프로그래밍
- Secure Coding
- java
- 항해플러스 백엔드 7기
- Python
- 자바연습문제
- 제네릭
- inflearn
- 인프런
- REGEXP_SUBSTR
- 자바의정석 연습문제
- JPA
- Today
- Total
목록Spring (54)
Continuous Challenge
프로젝트 생성 H2 데이터베이스 설치 및 실행 (persistence.xml 작성) Maven Project 생성 (Java 8) (pom.xml 작성) 데이터베이스 방언 JPA는 특정 데이터베이스에 종속 X 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름 - 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2 - 문자열을 자르는 함수 : SQL은 표준은 SUBSTRING(), Oracle은 SUBSTR() - 페이징 : MySQL은 LIMIT, Oracle은 ROWNUM 방언 : SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 hibernate.dialect 속성에 지정 주의할 점 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유 엔티티..
JPA Java Persistence API 자바 진영의 ORM 기술 표준 ORM Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA는 애플리케이션과 JDBC 사이에서 동작 JPA는 표준 명세 JPA는 인터페이스의 모음 JPA2.1 표준 명세를 구현한 3가지 구현체 하이버네이트, EclipseLink, DataNucleus JPA를 사용해야 하는 이유 SQL 중심적인 개발에서 객체 중심으로 개발 생산성 - 저장 : jpa.persist(member) - 조회 : Member member = jpa.find(memberId) - 수정 :..
자바자바 ORM 표준 JPA 프로그래밍 - 기본편 ORM 표준 JPA 프로그래밍 - 기본편 JDBC → MyBatis, JDBCTemplate → JPA
1. Spring Boot 프로젝트 생성 2. Lombok 설정 3. H2 Database 설치 4. JPA와 DB 설정 (application.yml) spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop; username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging: level: org.hibernate.SQL: debug org.hibernate.type: trace
빈 스코프란? 스프링 빈은 기본적으로 싱글톤 스코프(스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지)로 생성된다. 스코프 : 빈이 존재할 수 있는 범위. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프. 웹 관련 스코프 - request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프. - session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프. - application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프. 프로토타입 스코프 프로토타입 스코프를 스프링 컨테이너에 조회하면 ..
빈 생명주기 콜백 시작 스프링 빈은 다음과 같은 라이프사이클을 가진다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 사용 → 소멸전 콜백 → 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 참고: 객체의 생성과 초기화를 분리하자. 생성자는 필수 정보(파라미터)를 받고, 메모리를 할당해서 객체를 생성하는 책임을 가진다. 반면에 초기화는 이렇게 생성된 값들..
다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 1. 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이다. 특징 - 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. - 불변, 필수 의존관계에 사용 ★ 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. 물론 스프링 빈에만 해당한다. 2. 수정자 주입(setter 주입) setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법이다. 특징 - 선택, 변경 가능성이 있는 의존관계에 사용 - 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법이다. 참고: @Autowired 의 기본 동작은 ..
컴포넌트 스캔과 의존관계 자동 주입 시작하기 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 그리고 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. 컴포넌트 스캔은 @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. @Configuration 소스코드를 열어보면 @Component 애노테이션이 붙어있기 때문에 @Configuration 도 컴포넌트 스캔의 대상이 된다. (참고) 1. @ComponentScan @ComponentScan 은 @Component 가 붙은 모든 클래스를 스프링 빈으로 등록한다. 이 때 스..
웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다. → 메모리 낭비가 심하다. 해결방안 : 해당 객체가 딱 1개만 생성되고, 공유하도록 설계. 싱글톤 패턴 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴. 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. 싱글톤 패턴을 적용하면 고객의 요청이 올 때 마다 객체를 생성하는 것이 아니라, 이미 만들어진 객체를 공유해서 효율적으로 사용할 수 있다. 싱글톤 패턴 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의..