우주먼지
article thumbnail
Relation Mapping & MappedSuperClass
Framework/Spring 2023. 3. 2. 23:28

💡 Entity 연관관계 설정 JPA의 목적 - 객체지향 프로그래밍과 데이터베이스 사이의 패러다임 불일치 해결 연관관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관관계의 주인 : 양방향일 때, 연관관계에서 관리 주체 다중성 : 1:1, 1:N, N:1, N:M 단방향, 양방향 DB 테이블은 외래키 하나로 양쪽 테이블 조인이 가능하지만 객체는 참조용 필드가 있는 객체만 참조가 가능하다 그렇기 떄문에 두 객체 사이에 하나의 객체만 참조용 필드를 가지면 단방향, 각각 참조 필드를 가지고 있으면 양방향 관계다 JPA를 사용하여 DB와 패러다임을 맟추기 위해서 객체는 연관관계를 잘 선택해야 한다 선택은 비즈니스 로직에서 두 객체가 참조가 필요한지 여부를 고민해보면 됨 board.getPost()처럼 참..

article thumbnail
Kubernetes Service & Service Discovery
Ops/Kubernetes 2023. 3. 2. 20:41

💡 Service 노드의 파드는 기본적으로 외부통신이 안되는 내부망의 환경에 있다 Service란 Pod의 논리적 집합이며 어떻게 접근할지에 대한 정책을 정의해놓은 것 Service는 기본적으로 Load Balancing 과 Port Forwarding 기능을 포함한다 Label Selector를 통해 노출시킬 오브젝트의 레이블을 지정하는 방식이 주로 쓰인다 외부에 노출시킬때 4가지 타입이 있다 ClusterIP (default) - 클러스터 내부 통신용 NodePort - 노드IP:Port 의 방식을 통해 외부에서 접근 (NAT), 30000번대 포트 Load Balancer - 외부의 Load Balancer를 사용하는 방법 ExternalName - kube-dns로 DNS를 이용하는 방법 💡 Se..

Stream
Languages/Java 2023. 3. 1. 17:10

💡 Stream 많은 수의 데이터를 다룰 때 컬렉션이나 배열에 데이터를 담고 원하는 결고를 얻기 위해 for문이나 iterator를 사용해서 코드를 작성해왔다. 그러나 이런 방식으로 작성된 코드는 너무 길고 가독성과 재사용성이 떨어진다. 또 다른 문제는 데이터 소스마다 다른 방식으로 다뤄야 한다는 단점이 있다. 예를 들면 List를 정렬할 때는 Collections.sort()를 사용하고, 배열을 정렬할 때는 Arrays.sort()를 사용해야 한다. 이러한 문제를 해결하기 위해 만든것이 Stream이다. 스트림은 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 정의 해놓았다. 스트림의 특징 데이터 소스(원본)을 변경하지 않는다. Iterator처럼 일회용이다. 작업을 내부 반복으로 ..

Single & Multi Thread
Languages/Java 2023. 3. 1. 15:03

💡 Single & Multi Thread 싱글코어 스레드 수행시간의 쉬운 측정을 위해 new String 사용 (작업 수행속도 낮춤) public class CountThreadTimeMillis { public static void main(String[] args) { long startTime = System.currentTimeMillis(); for (int i=0; i

article thumbnail
Thread
Languages/Java 2023. 3. 1. 13:59

💡 Thread 데이터와 어플리케이션이 확보한 자원을 활용하여 소스코드 실행 즉, 하나의 코드 실행 흐름 Thread 프로세스에서 실행 제어만 분리한 것 프로세스로부터 자원을 할당받고 그 자원을 이용하는 실행의 단위 프로세스의 Stack만 할당받고 코드 & 데이터 & 힙영역은 공유하기 떄문에 좀 더 효율적인 통신 가능 캐시 메모리를 비우지 않아도 되서 더 빠름 자원 공유로 인한 문제가 발생할 수 있으니 이를 염두에 둔 프로그래밍을 해야함 한 프로세스에 여러개의 스레드가 생성될 수 있음 즉, 캐시 메모리나 PCB에 저장해야하는 내용이 적고 비워야 하는 내용도 적기 때문에 상대적으로 더 빠른 컨텍스트 스위칭 💡 구현과 실행 Thread 클래스를 상속하는 방법 (다른 클래스 상속 불가, 권장 X) Thread..

Memo - JPA
Framework/Spring 2023. 2. 28. 20:33

💡 JPA Memo Class EntityManager 영속성 컨텍스트 관리 EntityManagerFactory Spring으로 EntityManager 객체에 DI 주입 CommandLineRunner Application 런타임 시 초기화 작업 추가 LocalDateTime 컬럼의 TIMESTAMP 타입과 매핑, @Temporal 생략 TransactionManager 어플리케이션에 트랜잭션 적용, DI주입식 사용 (AOP 방식) TransactionInterceptor 트랜잭션 어드바이스용 트랜잭션 경계 설정 클래스 RuleBasedTransaction Attribute 트랜잭션 Attribute 설정 클래스 Advisor Advisor 객체 생성 후, DefaultPointcutAdvisor의 ..

Memo - Yaml
Framework/Spring 2023. 2. 28. 20:31

💡 Application.yml # 📌 [ Application.yml ] *** > ⭐ [인텔리제이 로그 한글 깨질때] server: servlet: encoding: force-response: true charset: UTF-8 > ⭐ [H2 Database] h2: console: enabled: true path: /h2 datasource: url: jdbc:h2:mem:test > ⭐ [JPA] jpa: hibernate: ddl-auto: create # (1) 스키마 자동 생성 show-sql: true # (2) SQL 쿼리 출력 properties: hibernate: format_sql: true # (3) SQL pretty print // sql: // init: // data-..

검색 태그