일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java 정렬
- TypeScript
- 사가 패턴
- 멀티스레드
- 타입스크립트
- 체인 패턴
- Resilinece4j
- Serial GC
- 스프링 배치
- 알고리즘
- thread
- Java
- JPA
- spring cloud
- Transaction Pattern
- Action Pattern
- Spring Cloud Netfilx Eureka
- The law of Demeter
- zipkin
- 디자인 패턴
- 스레드
- MSA
- spring batch
- 생산자 소비자 패턴
- 디자인패턴
- Parallel Old GC
- saga pattern
- Spring Boot Actuator
- 키클락
- 배치
- Today
- Total
목록Backend (77)
PSD( Private-Self-Development )
Java 서버 장점 멀티스레드로 설계 가능하여 자원을 효율적으로 사용할 수 있다. 많은 개발자와 레퍼런스가 존재한다. 객체 지향 적 장점을 가지고 있다. ( 유지 보수 성, 사용성 ) 지원하는 부가 기능( aop, security, Exception, batch 등 ) 단점 메모리 사용량이 높다. Node.js 대비 속도가 느리다. Node.js 서버 장점 이벤트 루프가 비동기 싱글 스레드 이기 때문에 메모리가 절약된다. 코드가 쉽고 간편하다. 빠른 응답 속도( 단순 작업 한정 ) 단점 CPU 사용량이 많을 경우, 성능이 급 저하된다. 어떤 서버를 사용할 까? CPU 사용량이 큰 연산을 자주 하는가? => Java 서비스 혹은 솔루션이 크고 복잡한가? => Java 단순 입출력 위주이고 서버단의 복잡한 ..
사용자가 입력한 URL 주소 중 도메인 네임 부분을 DNS 서버에 검색하고, 호스트 IP 주소를 찾아 전달한다. 브라우저 에서 HTTP Request 패킷을 생성 후 OS 에 전달 OS 에서 TCP/IP 패킷을 추가하여 랜 어답터로 전달 랜 어답터에서는 해당 패킷을 전기 신호로 변경하여 스위치 -> 라우터 -> 인터넷 을 거쳐 호스트 웹 서버에 도달 호스트 웹 서버에서는 HTTP Request 패킷을 추출하여 메시지를 복원하고 HTTP Request에서 요구한 데이터를 전달한다. 메시지에 따른 Response 패킷을 만들어 사용자 에게 보내고 ( 역순 ) 브라우저에서 Response 데이터를 사용하여 사용자에게 보여준다. 참고 : https://deveric.tistory.com/97 브라우저에 URL을..
JPA의 지원 쿼리 JPQL 테이블이 아닌 객체 지향 쿼리 SQL을 추상화하여 특적 DB SQL 의존도 x 동적 쿼리 사용 부적합 List memberList = em.createQuery( "select m From Member m Where m.name like '%hello%' ", Member.class ).getResultList(); JPA Criteria 동적 쿼리 지원 jpql 의 함수 버전 단, 가시성이 떨어지고 복잡해진다. => 유지보수성 저하 쿼리가 잘못 된 경우, 컴파일 오류가 나기 때문에 좋다. //Criteria 사용 준비 CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery query = cb.createQuery(Membe..
JPA 는 코드를 두 가지 타입으로 인식한다. 1. 엔티티 타입 @Entitiy 정의한 객체 데이터가 변해도 추적 가능 2. 값 타입 int, String 과 같이 자바 기본 타입 혹은 객체 테이터 변경 시 추적 불가 잘 사용 하면 객체 지향 적으로 좋다. 단, 여러 엔티티에서 공유하여 사용 할 경우, 문제 발생 복사 해서 사용하고, 불변 객체로 설계하자( 갯터만 생성하고 셋터는 생성하지 말자 ) 비교 시 equals() 함수 오버라이딩 하여 사용하자 기본 생성 equals() 를 쓰는 것이 좋다. ( get, set 함수 사용하도록 : 프록시를 위함 ) 값 타입 분류 1. 기본 값 타입 자바 기본 타입( int ) 래퍼 클래스( Integer ) String 2. 임베디드 값 타입( 복합 타입 ) @E..
프록시(Proxy)란? "대리"를 의미한다. JPA에서는 엔티티 조회 시, em.find() 가 아닌 em.getReference()로 지연 조회 시 조회 결과 값으로 이 가짜( 프록시 )를 조회해 온 후 이후 실 사용 시 조회 및 실 엔티티에 프록시 엔티티를 연결하는 역할로 사용된다. 프록시 특징 프록시는 첫 사용 시 한번만 초기화 된다. 초기화 시 프록시가 실 엔티티로 변경 되지는 않는다. 따라서 타입 체크 시 == 비교가 아닌 instance of 로 비교 해야한다. 영속성 컨텍스트에 해당 엔티티가 이미 있다면 getReference 시 실제 엔티티가 반환된다. 영속성 컨텍스트 에서 제거 된 경우, 프록시 초기화 시도 시 에러 발생 프록시 상태 확인 함수 프록시 초기화 여부 확인 emf.getPer..
JPA의 상속 관계 매핑 에는 두 가지 경우가 있다. DB의 테이블간 관계가 상속인 경우 엔티티 간의 공통 요소를 따로 빼서 상속해 줘야 하는 경우 각각의 방식에 따라 상속 대상 클래스를 생성 후 해당 클래스를 피상속 클래스들이 extends 받으면 상속이 성립된다. 1. DB의 테이블간 관계가 상속인 경우 이 경우, 상속하려는 엔티티에 아래 3가지 어노테이션을 부여한다. @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "Dtype") public abstract class Item{ } @Inheritance() strategy 속성 값에 따라서 상속 관계를 맵핑하는 방식이 달라진다. Inh..
JPA에서 Entitiy 란? JPA에서 관리하는 클래스이다. @Entitiy 어노테이션으로 지정할 수 있다. 단, - 기본 생성자 가 필수이다. - final 클래스, enum, interface, inner 클래스는 지정 불가능 - 저장할 필드에 final 사용 불가능 데이터베이스 스키마 자동 생성 jpa는 persistence.xml 설정 값에 따라 entitiy 설정한 객체에 대한 DDL을 자동으로 실행시켜 주기도 한다. 개발 단계에서 사용하기에 유용할 듯! 운영 단계에서는 절대 사용하지 말자... 매핑 어노테이션 @Entitiy JPA에서 해당 클래스를 관리하도록 설정하는 어노테이션 @Table() 속성 값을 설정하여 각 대상에 매핑 가능하다. @Id Primary Key 설정 @Generate..
영속성 콘텍스트? 엔티티를 영구 저장하는 환경 EntitiyManager.persist( entity ); 사실은 db에 저장하는 동작이 아닌 엔티티를 영속성 콘테스트에 영속하는 것 엔티티의 상태 비영속 ex) 객체 생성 후 데이터 세팅만 함 = 영속성 콘텍스트에 저장은 하지 않았다. 영속 ex) EntitiyManager.persist( entity ) = DB에 저장한 것이 아닌 영속성 콘텍스트에 저장한 것 트랜젝션. commit 시 에만 DB에 저장한다. 준영속 ex) EntitiyManager.detach( entity ) = 영속성 콘텍스트에서 해당 엔티티를 분리 삭제 EntitiyManager.remove( entity ) = 영속성 컨텍스트에 해당 엔티티 삭제 sql을 남긴다. GIT의 로컬..