분류 전체보기

Linux

리눅스 CentOS - 기본 셋팅

가상머신 세팅 Create a New Virtual Machine -> Custome -> Workstation 12.0 -> 3번째(I will install ~) 선택 -> Linux - CentOS 64-bit 선택 -> 가상머신 이름 : test_CentOS_7 경로 : \1_4월_평일19시_리눅스1_OOO\1_직접설치 -> 1, 1 (참고로 Number of processors - 실제 퓨터 속에 꽃혀있는 CPU 개수 - Server를 제외하면 거의 모든PC는 1개 number of cores perprocessor -CPU 속에 들어있는 코어 개수 -> 기본값인 1024MB 으로 선택 -> NAT -> LSI Logic -> SCSI -> Create a new virtual disk -> 용..

Spring

JPA - Entity 매핑

필드 매핑 종류 어노테이션 설명 @Column 컬럼 매핑 @Temporal 날짜 타입 매핑 @Enumerated enum 타입 매핑 @Lob BLOB, CLOB 매핑 @Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) 이제 위의 종류의 옵션들을 알아볼려고 한다. @Column 속성 설명 기본값 name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름 insertable, updatable 등록, 변경 가능 여부 TRUE nullable(DDL) null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. unique(DDL) @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제 약조건을 걸 때 사용한다. ..

Spring

JPA - Entity 매핑 (데이터베이스 스키마 자동 생성)

매핑 종류 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne,@JoinColumn @Entity @Entity 어노테이션이 붙인 클래스는 JPA가 관리하고 이것을 엔티티라고 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수이다. !!! 주의 !!! 기본 생성자 필수 ( 파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Table name : JPA에서 사용할 엔티티 이름을 지정한다. - 보통은 Entity 그대로의 이름을 쓰긴 합니다. catalog : 데이터베이스 cat..

Spring

JPA - 영속성 컨텍스트

영속성 컨텍스트 전에 썻던 글처럼 EntityManagerFactory 에서 EntityManager 를 생성하여 커넥션풀에서 미리 연결를 하고 있는 디자인 패턴에서 하나를 사용하여 DB 에 데이터 CRUD 를 하게 된다. 그렇다면 영속성 컨텍스트는 무엇일까? - Entity를 영구 저장하는 환경 이라는 뜻 - EntityManager.persist(entity) -> 영속성 컨텍스트에 저장한다는 구문 - 논리적인 개념으로 EntityManager 를 통해서 영속성 컨텍스트에 접근한다. Spring 프레임워크는 아래와 같은 구조를 가지고 있다. Entity 생명 주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 관리되는 상태..

Spring

JPA - 구동 방식

JPA 구동 방식 설정 정보를 조회하고 Persistence 에서 EntityManagerFactory 를 생성하고 그 안에서 EntityManager 를 생성하게 된다. 코드 persistence.xml 위와 같이 나의 상황에 맞게 설정해둔다. 나는 H2 Database 를 깔지 않고 MySQL 로 사용하기로 하였다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); 위와 같은 구문으로 우리는 hello 라는 정보를 가져온거다. 처음 이미지에 있는 1번 설정 정보 조회와 EntityManagerFactory 생성하는 2번 부분이다. 자 이제 EntityManagerFactory 를 만들었으니 여러 EntityManag..

Spring

JPA - 기본 개념

JPA Spring 으로 예시를 들어보자면 Spring 에서 JDBC 의 API를 이용한 JPA 를 사용하여 DB 에 쿼리를 날려 결과를 반환한다. 여기서 애플리케이션과 DB 에 매핑해주는것이 JPA 이다. - 직접 SQL 을 써서 가져오는 MyBatis 도 있다. JPA는 인터페이스 모음 - 하이버네이트, EclipseLink, DataNucleus - 이렇게 3개가 존재한다. 하지만 80%이상 하이버네이트를 쓰게 된다. 그렇다면 왜 사용해야 하나? - SQL 중심적인 개발에서 객체 중심으로 개발 - 생산성 - 유지보수 - 패러다임의 불일치 해결 - 성능 - 데이터 접근 추상화와 벤더 독립성 - 표준 의미로 사용하는것 같다. 내가 JPA 와 Mybatis 를 사용해봤지만, JPA 월등히 가독성과 유지보..

DB

쿼리 실행 구조 (MySQL 엔진)

MySQL 엔진, 스토리지 엔진 MySQL 엔진과 스토리지 엔진이 존재한다. 쿼리 파서 이 부분에서 기본 문법 오류는 이 과정에서 발견하고 사용자에게 오류 메세지를 전달하는 부분이다. 전처리기 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부와 객체의 접근 권한 등을 확인하는 과정을 이 단계에서 수행한다. 또한, 파서 과정에서 만들어진 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지도 확인 하는 부분이다. 옵티마이저 사용자의 요청으로 들어온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지를 결정하는 역할을 담당하고 사람이라고 치면 두뇌라고 한다. 쿼리 실행기 옵티마이저가 두뇌라고 하면 실행 엔진과 핸들러는 손과 발에 비유 할 수 있다. 예시로 옵티마이저가 GOURP BY 처리 하기 위해..

TIL

2023.12.22

오늘의 공부 오늘은 코드리뷰 프로젝트를 갈아 엎기로 하였다. 리팩토링의 시대가 온것이다. 복잡한 쿼리와 Entity 연관관계에 너무 복잡하고 불편하게 설정되어 있고, QueryDSL 은 쿼리문을 줄이는 동시에 에러성을 낮추기위해 도입을 하였고, 쿼리문을 줄이기 위한 도입이 였지만 그 역할을 하지 못하고 있다. 새롭게 Entity 부터 API 명세서에 맞는 API 리팩토링을 할 예정이다. 내일은? 코드리뷰 프로젝트를 마저 갈아 엎고 완성을 시킬 예정이다.

Spring

@Conditional

@Conditional 특정 조건일 때만 해당 기능을 활성화 할수 있고, 소스코드를 고치지 않고 가능하다. 특정상황일때만 특정 빈들을 등록해서 사용하도록 도와주는 기능이다. package org.springframework.context.annotation; public interface Condition { boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata); } matches() 메서드가 true 를 반환하면 조건에 만족해서 동작하고, false 를 반환하면 동작하지 않는다. ConditionContext : 스프링 컨테이너, 환경 정보등을 담고 있다. AnnotatedTypeMetadata : 애노테이션 메타 정보를 담..

Java

다형성 -1

다형성 다형성(Polymorphism)은 이름 그대로 "다양한 형태", "여러 형태"를 를 뜻한다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타 입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다. 다형적 참조 메서드 오버라이딩 다형적 참조 부모 타입의 변수가 자식 인스턴스를 참조한다. Parent poly = new Child() Child 인스턴스를 만들었다. 이 경우 자식 타입인 Child 를 생성했기 때문에 메모리 상에 Child 와 Parent 가 모두 생성된다. 생성된 참조값을 Parent 타입의 변수인 poly 에 담아둔다. 부모는 자식을 담을 수 있다. 부모 타입은 자식..

Domae_
'분류 전체보기' 카테고리의 글 목록 (3 Page)