일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NotEmpty
- Spring Boot
- restTemplate
- Service Locator 패턴
- 이펙티브 자바
- @SpyBean
- Service Locator
- springboot
- deleteById
- FCM
- Connection Pool
- JPA
- 디자인 패턴
- Effetive Java
- java
- 트랜잭션
- SQL 삽입 공격
- Item04
- Proxy Patter
- NotBlank
- @Valid
- 데이터베이스
- @ControllerAdvice
- @MockBean
- Effective Java
- Web
- Firebase
- multi module
- 플라이웨이트
- db
- Today
- Total
목록전체 글 (64)
NoTimeForDawdling
ORM이란? ORM은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 DataModel을 정형화하여 관리하려는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임입니다. RDB의 모델을 OOP에 Entity 형태로 투영시키는 방식을 사용합니다. 데이터베이스 데이터 -- 매핑 -- Object 필드 객체를 통해 간접적으로 데이터베이스 데이터를 다룹니다. ORM의 장점 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와줍니다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 개체 모델로 프로그래밍하는 데 집중할 수 있도록 도와줍니다. 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어듭니다. 각종 객체에 대한 코드를 별도로..
싱글턴(Singleton) 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 단순히 함수를 사용하기 위한 유틸, 로깅, 설계상 유일해야 하는 시스템 컴포넌트를 보통 싱글턴 인스턴스로 관리합니다. 클래스를 싱글톤으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있습니다. 싱글턴 만드는 방법 1. public static final 필드 방식 public class Elvis1 { public static final Elvis1 INSTANCE = new Elvis1(); private Elvis1() { } } public static final Elvis1 INSTANCE = new Elvis1() 은 static 영역이 로딩될 때 딱 1번만 호출됩니다. 해당 클래스가 ..
해시코드(hashCode) 해시코드란? 자바에서 동일한 이름의 객체가 여러 개 생성될 수 있는데, 이 객체들은 이름만 같을 뿐 서로 다른 상태를 가진 객체들입니다. 이 객체들을 구분하기 위해 고유한 정수값으로 출력시켜주는 메서드가 바로 hashCode()입니다. 즉, 해시코드란 객체를 식별하는 고유한 정수값을 의미합니다. 해시코드는 일반적으로 객체의 내부 주소를 정수값으로 변환하는 형태로 구현됩니다. 코드 예제 public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } public class HashcodeTest { public..
클래스는 몇몇의 반드시 필요한 부가적인 필드를 가질 수 있습니다. 그런 경우에 필수적인 매개변수를 가진 생성자에 부가적인 필드를 하나씩 추가하며 어려 생성자를 만들 수 있습니다. 필수 매개변수만 받는 생성자 필수 매개변수만 받는 생성자 + 선택 매개변수 1개를 받는 생성자 필수 매개변수만 받는 생성자 + 선택 매개변수 2개를 받는 생성자 등등 위와 같은 형태로 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식을 점층적 생성자 패턴(telescoping constructor pattern)이라 합니다. 점층적 생성자 패턴(Telescoping Constructor Pattern) 점층적 생성자 패턴은 설정하고 싶은 매개변수를 최소한으로 사용하는 생성자를 사용해서 인스턴스를 만들 수 있습니다. (필수 ..
Index의 필요성 DB Index의 필요성을 위해 Full Table Scan을 알아보겠습니다. Full Table Scan(순차 접근) Full Table Scan이란 데이터베이스의 한 릴레이션에서 데이터를 찾거나 재배열하기 위해 데이터가 저장된 목록 중 모든 데이터 요소를 순차적으로 조사하여 원하는 것을 찾아내는 것을 말합니다. 이런 순차 접근에 의한 검색은 Tuple의 수가 많아질수록 검색 시간이 매우 오래 걸립니다. DB는 Index가 설정되어 있지 않으면 Full Table Scan 방식으로 데이터를 찾음으로써 속도가 매우 느려지게 됩니다. 이 문제를 해결하기 위해 DB에서 Index 기능을 제공합니다. Index란? Index는 RDBMS에서 검색도를 높이기 위해 사용하는 기술입니다. 특정 ..
기본형과 참조형의 종류 기본형과 참조형의 종류는 다음과 같습니다. 기본형(Primitive Type) Boolean Type(boolean) Numeric Type Character Type(char) Integral Type Integer Type(short, int, long) Floating Point Type(float, double) 참조형(Reference Type) Class Type Interface Type Array Type Enum Type 기본형(Primitive Type) 기본형이란? 기본형은 실제 값을 저장하는 공간입니다. 자바에서 기본 자료형은 반드시 사용하기 전에 선언되어야 합니다. 비객체 타입으로 null값을 가질 수 없습니다. 기본형의 종류(8가지) Type Bits Ra..
정적 팩토리 메서드란? 정적 팩토리 메서드는 객체 생성을 캡슐화하는 기법입니다. 객체를 생성하는 메서드를 만들고, static으로 선언합니다. 정적 팩토리 장점 1. 이름을 가질 수 있다. public class Foo1 { String name; public Foo1(String name) { this.name = name; } public static Foo1 withName(String name) { return new Foo1(name); } } 위와 같이 이름을 가질 수 있습니다. withName이라는 이름을 갖게 되어 가독성이 좋아졌습니다. Foo1 foo1 = new Foo1("bang"); // 클라이언트는 "bang"이 무엇을 의미하는지 이해하기 힘들다. Foo1 foo1 = Foo1.w..
예전에 스터디를 참여하면서 일급 컬렉션에 대해 공부하고, 적용해 본 적이 있었습니다. 일급 컬렉션이 무엇인지, 어떤 장점이 있는지 지금부터 알아보겠습니다. 일급 컬렉션이란? 일급 컬렉션은 Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태를 뜻합니다. 중요한 점은 Collection을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다는 겁니다. 간단한 코드 예제 List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); 위의 코드를 아래와 같이 Wrapping 하는 것을 얘기합니다. public class Numbers { private List numbers; public FirstCl..