일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL프로그래밍
- 스토어드 프로시저
- 즉시로딩
- PS
- exclusive lock
- fetch
- 이진탐색
- 비관적락
- 힙
- CHECK OPTION
- FetchType
- querydsl
- 동적sql
- eager
- 지연로딩
- 연결리스트
- 연관관계
- 다대다
- 유니크제약조건
- 스프링 폼
- 다대일
- JPQL
- 데코레이터
- execute
- 낙관적락
- shared lock
- BOJ
- dfs
- 일대다
- 백트래킹
- Today
- Total
목록전체 글 (555)
흰 스타렉스에서 내가 내리지

# 식별관계 (Identifying Relationship) vs 비식별관계 (Non-Identifying Relationship) # 식별관계 부모 테이블의 기본 키를 내려받아서 자식 테이블의 기본 키 + 외래 키로 시용하는 관계다. # 비식별관계 부모 테이블의 기본 키를 받아서 자식 테이블의 외래 키로만 사용하는 관계다. 테이블을 설계할 떄 식별 관계나 비식별 관계 중 하나를 선택해야 한다. 최근에는 비식별 관계를 주로 사용하고 꼭 필요한 곳에만 식별 관계를 사용하는 추세다.

# 언제 사용하라고? 부모 클래스는 테이블과 매핑하지 않고, 부모 클래스를 상속 받는 자식 클래스에게 매핑 정보만 제공하고 싶을 떄 # 비유를 하자면.. 추상 클래스와 비슷하다 @Entity 는 실제 테이블과 매핑되지만, @MappedSuperclass 는 실제 테이블과는 매핑되지 않는다. 단순히 매핑 정보를 상속할 목적으로만 사용된다. Member 와 Seller 는 서로 관계가 없는 테이블과 엔티티다. 테이블은 그대로 두고 객체 모델의 id, name 두 공통 속성을 부모 클래스로 모으고 객체 상속 관계로 만들어보자 @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue private Long id; private String..
@Entity @Getter public class Member { @Id @Column(name = "MEMBER_ID") private String id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; //==연관관계 메소드==// public void setTeam(Team team){ // 기존 팀과 관계를 제거 if (this.team != null){ this.team.getMembers().remove(this); } this.team = team; team.getMembers().add(this); } } 한 번에 양방향 관계를 설정하는 메소드를 연관관계 편의 메소드라 한다. membe..

# 매핑 어노테이션 @Column @Enumerated @Temporal @Lob @Transient @Access 1. @Column 객체 필드를 테이블 컬럼에 매핑한다. 속성 중에 name, nullable, unique 가 주로 사용되고, 나머지는 잘 사용되지 않는 편이다. nullalbe 의 디폴트값은 true 이다. @Column(nullable = false) @Column(unique = true) @Column(columnDefinition = "varchar(100) default 'EMPTY'") @Column(length = 400) 생성된 DDL unique alter table Tablename add constraint UK_Xxx unique (username) columnDe..
@Table(name = "MEMBER", uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"} )}) public class Member { @Id private String id; @Column(name = "name") private String username; private Integer age; } UNIQUE 제약으로 들어가는 컬럼들은, 그들의 조합이 유일해야 한다. 각 컬럼의 데이터의 유일함은 의미가 없고, 조합이 유일해야 한다. (name = 'Alice', age = 25) 와 (name = 'Alice', age = 23) 은 공존 가능 # 생성된 DDL ALTER T..

numpy 가 없대요 나는 scipy 랑 numpy 라이브러리를 쓸 건데, lambda 함수에서 import 할 수 있도록 한 번 해보죠 1. python 이라는 폴더를 만들어 봅니다. 2. 그 안에서 pip3 install 을 합니다. pip3 install numpy -t . pip3 install scipy -t . - 라이브러리들이 폴더 내에 설치될 수 있도록 한다. 3. python 폴더를 압축한다. 4. AWS Lambda 콘솔에서 '계층' 메뉴에 들어가, '계층 생성'을 누른다. 5. python.zip 파일을 업로드한다. 그럼 S3 에서 업로드하고 온다. 6. Lambda 함수로 돌아가서 [Add a layer] 7. 계층 선택

빈번하게 호출되는 API에 대해서, 매번 서비스 로직을 실행하고 응답하는 것은 비효율 적일 수 있다. (응답값이 같다는 가정 하에) API 의 응답 결과를 Elasticache for Redis 를 이용하여 응답 값을 캐싱해주면 어떨까? # API Caching ? - API 의 호출에 따라 캐시를 이용하여, 서버의 부하를 줄이고 API 성능을 최적화 하여 응답시간을 단축시키는 역할을 한다. - 데이터를 메모리에 저장하여, 빠른 검색을 가능하게 하는 기능을 제공한다. # Cache 사용 목적 - DB 로부터 데이터를 조회하는 경우, 동일한 데이터를 반복하여 조회함으로써 불필요한 일을 반복하는 문제가 발생한다. - 캐시를 통해, DB 로부터 반복적으로 데이터를 조회해 오는 일에 대해, 최초 데이터를 조회해..

Redis 설치와 실행 redis 설치 $ brew install redis redis 실행 $ brew services start redis redis-cli 실행 $ redis-cli With Spring Boot * gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' * application.yml spring: data: redis: host: localhost port: 6379 password: 1234 * Configuration @Configuration @EnableCaching public class RedisConfig { @Value("${spring.data.redis.host}..
CPU (Central Processing Unit) 컴퓨터의 "두뇌"로, 모든 명령어의 실행과 데이터의 처리를 담당한다. 이는 프로그램의 명령어를 해석하고, 산술 및 논리 연산을 수행하는 장치이다. 주 메모리 :: RAM (Random Accesss Memory) CPU가 현재 실행 중인 프로그램과 해당 데이터를 일시적으로 저장하는 곳 RAM 은 빠른 접근 속도를 가지고 있어, CPU 가 필요로 하는 데이터와 명령어를 신속하게 제공한다. 그러나 전원이 꺼지면 그 내용이 사라지는 휘발성 메모리이다. 보조 메모리 HDD, SSD 와 같이 데이터를 영구적으로 저장하는 장치이다. 주 메모리보다 느린 접근 속도를 가지지만, 전원이 꺼져도 데이터가 유지된다. 보조 메모리는 운영체제, 애플리케이션 프로그램, 사용자..

문제 원인 파악 Github Actions 로, 도커 이미지를 빌드한 후, ECS 에 자동 배포를 하고 있다. ECS 는 EC2 t2.micro(프리티어) 를 기반으로 동작중이다. CD 중에 memory 부족 에러가 발생하여 배포에 실패하였다. 해결 전에는 CPU 부족이 아닌 메모리 부족이라고 에러 메시지가 떴었다 why?? - (Rolling Update) 나는 ECS 에서 "롤링 업데이트 (Rolling Update)" 라고 불리는 업데이트 전략을 사용하고 있다. 롤링 업데이트 전략은, 서비스를 업데이트할 때 ECS 가 자동으로 새 버전의 태스크 인스턴스를 시작하고, 새 인스턴스가 정상적으로 시작되고 서비스에 트래픽을 성공적으로 수용할 수 있음을 확인한 후에 기존 버전의 태스크 인스턴스를 순차적으로 ..