본문 바로가기
728x90

db4

로직 처리 순서와 방식에 따른 속도 차이 비교 리팩터링 미션을 수행하던 중 하나의 리팩터링 지점을 여러 방식으로 리팩터링 할 수 있다는 생각을 하게 되었고, 이 방식들의 차이가 프로그램 실행 속도에 얼마나 영향을 미치는지 궁금증이 들었다. 궁금증이 발생한 부분은 다음과 같다. 1. 객체 상태를 변경해야 할 때 단순 setter를 사용하는 것과 새로운 객체를 만드는 방식에서 속도 차이가 얼마나 발생하는 가. 2. 디비 조회를 요구하는 검증 로직과 디비 조회가 발생하지 않는 검증 로직을 모두 수행할 때, 검증 로직 순서를 바꾸는 것만으로 로직 실행 시간을 줄일 수 있나. 비교에 사용될 코드 이번 실험(?)에서 사용될 코드는 위에서 언급한 리팩터링 미션에 사용된 코드이다. 상품을 주문할 수 있는 테이블이 있을 때, 해당 테이블에 게스트 존재 여부를 바꿔주.. 2022. 10. 29.
엔티티 매핑 JPA가 지원하는 매핑 어노테이션은 다음과 같이 4가지로 분류할 수 있다. 1. 객체와 테이블 매핑: @Entity, @Table 2. 기본 키 매핑: @Id 3. 필드와 컬럼 매핑: @Column 4. 연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA를 사용해 테이블과 클래스를 매핑할 때 사용한다. @Entity 속성은 다음과 같다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통은 디폴드값인 클래스 이름을 사용한다. 다른 패키지에 이름이 같은 엔티티 클래스가 있으면 이 속성으로 이름을 지정해 충돌을 피할 수 있다. 클래스 이름 @Entity를 적용하기 위해선 다음과 같은 점을 따라야 한다. 1. 기본 생성자가 존재해야 한다. 접근자는 publi.. 2022. 7. 26.
트랜잭션(Transaction) 트랜잭션은 작업의 완전성을 보장해준다. 논리적인 작업 셋을 모두 완벽하게 처리하지 못했을 경우 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어준다. MySql에서는 InnoDB 스토리지 엔진이 트랜잭션을 지원하며 MyISAM, MEMORY 스토리지 엔진은 트랜잭션을 지원하지 않는다. 트랜잭션은 반드시 여러 개의 변경 작업을 수행하는 쿼리가 조합돼야 하는 것은 아니다. 하나의 논리 적인 작업 셋에 하나 이상의 쿼리가 적용될 수 있다. 트랜잭션의 특징 원자성(Atomicity) 트랜잭션이 DB에 모두 반영이 되던가, 모두 되지 않아야 한다. 부분적으로 반영된다면 값을 예측할 수 없게 된다. 일관성(Consistency) 작업 처리 결과는 항상 일정해야 한다. 트랜잭션이 진행되는 동안 .. 2022. 5. 1.
데이터베이스 생성, 테이블 생성 데이터 베이스 생성 CREATE SCHEMA `db_name` DEFAULT CHARACTERSET utf8;으로 db를 생성하고 use db_name;을 하면 해당 디비를 선택할 수 있다 테이블 생성 테이블을 생성할때는 만들테이블의 컬럼명과 각 컬럼명에 해당하는 설정 그리고 테이블 옵션이 들어간다 컬럼명 옵션 1. INT 정수 자료형(FLOAT, DOUBLE은 실수) 2. VARCHAR 문자열 자료형, 가변길이 3. CHAR 문자열 자료형, 고정길이 4. TEXT 긴 문자열은 TEXT로 별도 저장 5. DATETIME 날짜 자료형 저장 6. TINTINT -128~127까지 저장가능 7. NOT NULL 빈값은 받지 않는다는 의미 8. NULL 빈 값도 받겠다는 의미 9. AUTO_INCREMENT 숫.. 2020. 11. 26.
728x90