본문 바로가기

전체 글150

[JPA] GenerationType.Sequence 설정시 next value 두 번 호출하는 이유 JPA Entity 객체의 Id 필드를 지정할 때, Generation type을 identity, sequence, table 등의 전략으로 설정할 수 있다. (관련 포스팅) 이 때 type을 sequence로 설정하고 persistence.xml 내 DDL auto 프로퍼티를 create로 주게 되면(꼭 해당 상황에서만 발생하지는 않지만) sequence 생성 및 최초 실행 시 next 값을 두 번 호출한다. // 저장할 Member Entity @Entity @SequenceGenerator( name = "MEMBER_SEQ_GENERATOR")// default 값 public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUE.. 2022. 1. 25.
[JPA] 자바 ORM 표준 JPA 프로그래밍 : 엔티티 매핑 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColum 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티. 그 외에는 관리하지 않는 자유롭게 사용되는 클래스 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수로 붙여줘야 함 ! 주의할 점 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) → reflection 등으로 기능이 추가되기 때문 final 클래스, enum, interface, inner 클래스 사용 불가 DB에 저장할 필드에 final 사용 불가 @Entity annotation 속성.. 2022. 1. 20.
[JPA] 자바 ORM 표준 JPA 프로그래밍 : 영속성 관리 - 내부 동작 방식 JPA에서 가장 중요한 2가지 Mapping : 객체와 관계형 데이터를 각 어떻게 설계하여 매핑할 것인가. (설계 관련. 정적인 것) 영속성 컨텍스트 영속성 컨텍스트 : Entity를 영구 저장하는 환경 Entitymanager.persist(entity): DB에 저장하는 메소드가 아닌, 영속성 컨텍스트에 저장하는 메소드! 논리적인 개념. 가시적이지 않음. 엔티티 매니저를 통해 영속성 컨텍스트에 접근 엔티티 생명주기 영속성 컨텍스트의 이점 1차 캐시 ( 하나의 트랜젝션에서의 캐시) 영속성 컨텍스트 내부의 캐시 cf) 2차 캐시 : Application 전체에서 공유하는 캐시 동일성(identity) 보장 : 1차 캐시로 반복 가능한 읽기 (repeatable read) 등급의 트랜젝션 격리 수준을 데이.. 2022. 1. 16.
[JPA] 자바 ORM 표준 JPA 프로그래밍 : JPA란, JPA 시작하기 JPA 소개 ORM : Object-realational mapping ( 객체 관계 매핑) 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 (JPA, TypeORM ....) 객체와 RDB 두 기둥 위에 있는 기술 JPA : Java Persistence API, 자바 진영의 ORM 기술 표준 Application과 JDBC 사이에서 동작 매핑 정보를 바탕으로 Query 생성 후 DB에 전송 및 결과 반환 받음 패러다임의 불일치 해결 (Object - RDB) Hibernate (오픈소스) 바탕으로 만들어짐 JPA는 표준 명세 (인터페이스의 모음)이며 , 구현체 3가지 존재 Hibernate E.. 2022. 1. 16.
[DDD] DDD Quickly ( 도메인 주도 설계란 무엇인가?) 정리 http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966260126&orderClick=&Kc= 도메인 주도 설계란 무엇인가 - 교보문고 쉽고 간략하게 이해하는 DDD | 거대한 소프트웨어 프로젝트가 직면하는 가장 어려운 고비는 구현 자체가 아니라 소프트웨어가 적용될 실제 도메인이다. 도메인 기반 설계는 도메인에 어떻게 접 www.kyobobook.co.kr 도메인 주도 설계란 무엇인가? 자동차라는 것은 단순한 조립품 이상의 것이다. 좋은 자동차는 비전으로부터 출발하고, 그 비전은 주의 깊게 명세서로 기술되고, 이것은 다시 설계로 이어진다. 원래의 비전을 달성할 때까지 여러 달 또는 여러 해 동안 수많.. 2022. 1. 2.
[도서] 객체지향 생활체조 규칙 소트웍스 앤솔러지 도서에서 제안하는 객체지향 생활체조 9가지 규칙 메서드당 들여쓰기 한 번 else 예약어(keyword) 금지 원시값과 문자열의 포장 한 줄에 한 점만 사용 축약 금지 모든 엔티티(entity)를 작게 유지 2개 이상의 인스턴스 변수를 가진 클래스 사용 금지 일급 콜렉션(first collection/class) 사용 게터/세터/속성(property) 사용 금지 2021. 10. 2.
[사이트] 리액티브 선언문 선언문 https://www.reactivemanifesto.org/ko 리액티브 선언문 탄력성(Resilient): 시스템이 장애 에 직면하더라도 응답성을 유지 하는 것을 탄력성이 있다고 합니다. 탄력성은 고가용성 시스템, 미션 크리티컬 시스템에만 적용되지 않습니다. 탄력성이 없는 시 www.reactivemanifesto.org 용어집 https://www.reactivemanifesto.org/ko/glossary 용어집 - 리액티브 선언문 용어집 비동기 옥스퍼드 사전은 비동기를 _"동시에 존재하거나 발생하지 않는"_ 이라고 정의한다. 이 선언문의 문맥에서는 클라이언트에서 서비스로 전송된 요청이 이후 임의의 시점에 처리된 www.reactivemanifesto.org 2021. 10. 2.
모바일 백엔드 서버 설계 방법론 janghp.tistory.com/974 [조대협] 스타트업을 위한 모바일 백엔드 서버의 설계 수요일 밤에 피곤한 몸을 이끌고 다녀옴. 모르는 게 너무 많은 스스로를 다시 한 번 확인. 그래도 포기하지 말고 길게 보고 하나씩 하나씩 배워가야겠지. 일단 메모한 것 저장. https://tacademy.sktechx janghp.tistory.com 백엔드 아키텍쳐 설계를 대략적으로, 실무적으로 정리해놓은 글 2021. 4. 26.
main() 메서드가 실행되기 전 JVM에서 수행하는 전처리 작업들 java.lang 패키지를 T 메모리의 스태틱 영역에 배치한다. import된 패키지를 T 메모리의 스태틱 영역에 배치한다. 프로그램 상의 모든 클래스를 T 메모리의 스태틱 영역에 배치한다. main() 스택 프레임이 stack frame 안에 할당 (스택 프레임의 각 메소드 영역은 여는 중괄호때 생성되고 닫는 중괄호를 만나면 소멸) 메서드의 인자 args를 저장할 변수 공간을 stack frame에 할당 main() 메서드 안의 첫 명령문 실행 main() 의 닫는 괄호 : main() 메서드 스택 프레임 소멸 -> T 메모리 소멸, JVM 기동 중지, JRE가 사용했던 시스템 자원을 운영체제에 반납 2021. 4. 25.