Component Scan은 @Component 가 붙은 모든 클래스를 스프링 빈으로 등록해준다. 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자로 사용한다. * 빈 이름을 @Component("myComponent") 이런식으로 직접 지정할수가 있다. 내 프로젝트 구조는 다음과 같다. com.my com.my.service com.my.repository 컴포넌트 스캔 사용하기 1. 빈으로 등록할 클래스 설정 MemberServiceImpl 파일은 com.my.service 패키지에 위치한다. @Component public class MemberServiceImpl implements MemberService { } 2. 컴포넌트 스캔 클래스 설정 AppConfig 파일은 com.my..
스프링의 기본 빈 등록 방식은 싱글톤이다. * 하지만 싱글톤 방식만 지원하는게 아니라 요청할 때마다 새로운 객체를 반환하는 기능도 제공한다. 스프링 컨테이너는 *싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. @Configuration public class AppConfig { @Bean //spring container에 등록 public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } } 스프링 컨테이너에 memberSe..
스프링 컨테이너는 자바 객체를 생성하고 연결하고 구성하는 객체의 생명주기를 관리한다. (컨테이너는 스프링의 핵심 !) 이렇게 스프링 컨테이너에서 관리되는 객체를 스프링에서 Spring Bean 이라고 한다. Spring Container 종류 BeanFactory 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. 스프링 Bean과 관련된 대부분 기능(getBean() 포함)은 BeanFactory가 제공한다. ApplicationContext BeanFactory의 기능을 모두 상속받아 제공한다. 대부분의 Bean 관련 기능은 BeanFactory가 제공하지만, ApplicationContext는 아래와 같이 여러 인터페이스들을 상속 받아 더 다양한 기능을 제공한다..
영속성데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성 컨텍스트 (Persistence Context)Entity를 영구 저장하는 환경이다.애플리케이션이 데이터베이스에서 꺼내온 객체를 보관하는 역할을 한다.영속성 컨텍스트는 Entity Manager를 생성할 때 하나 만들어진다.영속성 컨텍스트는 Entity Manager를 통해 Entity를 조회하거나 저장할 때 Entity를 보관하고 관리한다. Entity 생명주기비영속 (New/Transient)영속성 컨텍스트와 관계가 없는 상태 (순수한 객체 상태)Member member = new Member();member.setId("1");member.setName("김세영"); 영속 (Managed)영속성 컨텍..
JPA 를 알기 전에 ORM 부터 알아보자. ORM (Object Relational Mapping)데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.(객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.)즉, 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것이다.객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다.예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 대 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다.그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다..
stop docker stop 명령어를 사용하게 되면 컨테이너는 SIGTERM 시그널을 받는다. SIGTERM 이란 프로그램의 종료를 유발하는 상태이다. 사용법 docker container stop [container_name] pause docker pause 명령어를 사용하게 되면 컨테이너는 SIGSTOP 시그널을 받게 된다. SIGSTOP 이란 프로세스를 중단시킨 상태로 종료한 상태는 아니다. 사용법 docker container pause [container_name] // pause 명령어로 중단시킨 컨테이너 재개하는 방법 docker container unpause [container_name] 컨테이너 상태 확인 docker ps 1d6190ac286f mysql:8.0.29 "docker..
...View Table 에 대한 내용은 아래 링크에서 확인하도록 하자.https://yeongnius.tistory.com/27 View Table내용을 읽기 전 용어에 대해 정의한다. 기본 테이블 : 물리적으로 실제 존재하는 테이블이다. 뷰 테이블 : 기본 테이블로부터 유도된 가상 테이블, 데이터 사전에만 있고 실제 데이터는 기본 테yeongnius.tistory.com 진행 내용1. 데이터베이스에서 직접 뷰 테이블을 생성한다.JPA를 통해서 뷰 테이블을 생성할 수 없는 것 같았다 :( 2. ReadOnlyRepository를 직접 정의해야 한다.우리는 보통 JpaRepository 를 상속받아 Pagenation, Sorting 포함하여 CRUD 의 기능을 사용한다.@NoRepositoryBeanp..
내용을 읽기 전 용어에 대해 정의한다. 기본 테이블 : 물리적으로 실제 존재하는 테이블이다. 뷰 테이블 : 기본 테이블로부터 유도된 가상 테이블, 데이터 사전에만 있고 실제 데이터는 기본 테이블의 데이터를 사용한다. . . . 정의 하나 이상의 뷰 테이블은 기본 테이블로부터 유도되어 정의되는 가상 테이블이다. 기본 테이블처럼 로우와 컬럼을 포함하며, 컬럼은 기본테이블에 실제로 있는 컬럼이다. 장점 논리적 독립성 제공 뷰는 논리 테이블이므로 테이블의 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다. 사용자 데이터 관리 용이 복수 테이블에 존재하는 여러 종류의 데이터에 단순한 질의어 사용이 가능하다. 데이터 보안 용이 중요 보안 데이터를 저장 중인 테이블에는 접근 불허하며, 해당 테이블..
LOAD DATA 를 왜 썼을까에 대한 설명은 아래와 같다. 수십만건의 데이터를 특정 테이블에 입력해 달라는 요청이 왔다. 요청온 데이터는 그 많은 양의 insert 문이 담긴 sql 파일과 csv 파일이었다. 처음에 sql 파일을 보고 실행했더니 오랜 시간이 소요되어 LOAD DATA를 알아보게 되었다. . . . LOAD DATA 실행문은 텍스트 파일의 행을 빠른 속도로 테이블에 데이터를 입력한다. MySQL 서버의 LOAD DATA 명령도 내부적으로 MySQL 엔진과 스토리지 엔진의 호출 횟수를 최소화하고 엔진이 직접 데이터를 적재하기 때문에 일반적인 SELECT 명령과 비교했을 때 매우 빠르다고 한다. 내가 알고 있는 가능한 파일은 txt, csv 지만 더 다양한 파일을 활용할 수 있는지는 확인을..
Composite Key란 테이블의 기본 키를 두가지 컬럼의 조합한 것이다.이번 실무에서 두 가지 컬럼을 조합하여 PK를 구성하라는 요청사항이 들어왔다😱 활용@IdClass@EnbeddedId규칙(Composite Key를 정의하기 위한 규칙이다)인수가 없는 생성자가 있어야 한다.직렬화가 가능해야 한다.equals(), hashCode() 함수가 정의되어야 한다.Composite Key 클래스는 Public이어야 한다. @IdClass 활용@EqualsAndHashCode@NoArgsConstructorpublic class UserId implements Serializable { private Long id; private String lastName;}@Getter@Table@E..
- Total
- Today
- Yesterday
- 티스토리챌린지
- java
- 추상클래스
- object
- Hash
- fail-fast
- Security
- nginx
- 고정 세션
- @conditional
- Load Balancer
- HashSet
- 인터페이스
- nosql
- 로드 밸런서
- JPA
- syncronized
- Caching
- Sticky Session
- 인스턴스변수
- AutoConfiguration
- 정적변수
- 오블완
- fail-safe
- Red-Black Tree
- Spring
- HashMap
- 다중화
- 자동구성
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |