반응형

전체 글 252

[DB] SELECT ~ FOR UPDATE

SELECT ~ FOR UPDATE 선택한 행에 대해 LOCK을 설정하는 기능, update와 delete에서만 row level lock을 걸 수 있다. > 쉽게 말해, 내가 이 행을 update 할 것이니 사용하지 말라고 조건을 주는 것 옵션 1. SELECT FOR UPDATE: SELECT시, 다른 사람이 LOCK 중이면 무한정 기다림 2. SELECT FOR UPDATE NOWAIT: SELECT시, LOCK을 제어할 수 없으면 에러처리, 누군가 LOCK 중이면 해당 행에 대한 LOCK을 포기 3. SELECT FOR UPDATE WAIT 5(초단위): SELECT시, LOCK을 제어할 수 없으면 5초동안 계속 LOCK을 재시도, 5초가 지나면 포기

IT/개발 2021.11.05

[Clean Code] 6장, 객체와 자료 구조

Clean Code - 로버트 C.마틴 6장, 객체와 자료 구조 변수를 비공개(private)로 정의하는 이유: 변수에 의존하지 않게 만들기 위해 그렇다면 왜 get, set을 사용하여 공개(public)할까? 1. 자료 추상화 - 추상 인터페이스를 제공하여 사용자가 구현을 모른 채 자료의 핵심을 조작 할 수 있어야 함 - 자료를 세세하게 공개하기 보다 추상적인 개념으로 표현 Bad Code public class Point{ public double x; public double y; } > 구현을 외부로 노출하는 함수 ( private로 선언하더라도 get, set을 이용하면 외부에 노출하는 것과 마찬가지) Clean Code public interface Point{ double getX(); do..

IT/책 2021.11.05

[Clean Code] 5장, 형식 맞추기

Clean Code - 로버트 C.마틴 5장, 형식 맞추기 코드의 형식을 맞추기 위해 간단한 규칙을 정하고 따라야 함 1. 형식을 맞추는 목적 - 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 영향을 미침 - 원할한 소통 2. 적절한 행 길이 유지 - 자바 파일 크기 = 클래스 파일 크기 - 500줄을 넘지 않고 대부분 200줄 정도인 파일로 커다란 시스템을 구축 할 수 있음 ex. JUnit, FitNesse, Time and Money는 상대적으로 파일 크기가 작고, 200줄 미만임 1) 신문 기사처럼 작성 - 아래로 내려갈수록 세세한 사실이 보이도록 - 이름: 간단하고 설명이 가능하게 - 첫 부분에는 고차원 개념과 알고리즘 설명 - 아래로 내려갈수록 의도를 세세하게 묘사 2) 개념은 빈 행..

IT/책 2021.10.30

[Clean Code] 4장, 주석

Clean Code - 로버트 C. 마틴 4장, 주석 주석은 코드로 의도를 표현하지 못해서, 실패를 만회하기 위해서 사용함 🔴 주석은 필요 악 🔴 - 주석을 유지/보수하기 어려움 - 주석이 코드를 항상 따라가지 않음 - 주석이 부정확한 고아가 되는 사례가 많음 - 부정확한 주석은 없는 주석보다 훨씬 나쁨 1. 주석은 나쁜 코드를 보완하지 못함 - 주석을 추가하는 이유: 코드 품질이 나쁘기 때문 2. 코드로 의도를 표현 - 주석을 사용하지 않고 코드로 표현 3. 좋은 주석 1) 법적인 주석 ex. 저작권 정보 2) 정보를 제공하는 주석 ex. 정규표현식의 시간과 날짜 3) 의도를 설명하는 주석 4) 의미를 명료하게 밝히는 주석 ex. 모호한 인수나 반환 값 if(a.compareTo(a) == 0){} /..

IT/책 2021.10.30

[Spring] Spring Data JPA 사용 방법

pom.xml에 라이브러리 추가 org.springframework.boot spring-boot-starter-data-jpa org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 - H2: 인메모리 DB 테이블 매핑 @Entity(name = "member") public class Member{ @Id private Long id; private String name; @Builder public Member(String name){ this.name = name; } } Member (PK) bigint id varchar name - @Entity: JPA가 관리하는 클래스 > name: 속성 지정, 사용할 엔티..

IT/개발 2021.10.29

[Spring] JPA란

JPA 자바 진영의 ORM 기술 표준 명세 ORM(Object Relational Mapping) 객체-관계 매핑, 객체지향프로그래밍(OOP)의 클래스와 RDB의 테이블을 자동으로 매핑하는 것을 의미 객체는 객체대로, RDB는 RDB대로 설계하여 ORM이 중간에서 매핑하는 형태 https://geonlee.tistory.com/207 장점 - 완벽한 객체지향적인 코드: 클래스의 메서드를 통해 데이터베이스 조작 - 재사용성, 유지보수, 리팩토리 용이 - DBMS 종속성 ❌ 단점 - 객체-관계 간의 불일치: 세분성, 상속성, 일치, 연관성, 탐색 동작 과정 - 애플리케이션과 JDBC 사이에서 동작 조회 저장 장점 - SQL 중심적인 개발에서 객체 중심으로 개발 - 생산성 > CRUD 간편 저장: jpa.pe..

IT/개발 2021.10.29

[Clean Code] 3장, 함수

Clean Code - 로버트 C. 마틴 3장, 함수 함수를 처음 읽는 사람이 프로그램 내부를 직관적으로 파악 할 수 있어야 함 1. 작게 만들기 - 얼마나 작게 만들어야 할까? ➡ 모든 함수를 4줄 이내로 🚧 if / else/ while 문 등에 들어가는 블록은 한 줄이어야 함 Clean Code public static String renderPageWithSetupsAndTeardowns(PageData pageData, boolean isSuite) throws Exception{ if(isTestPage(pageData)){ includeSetupAndTeardownPages(pageData, isSuite); } return pageData.getHtml(); } ➡ if문 안에는 하나의 함..

IT/책 2021.10.28
반응형