![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c1zcpG/btrmZIiA6ty/J75ZIJFerRMkQWsTzNwMW1/img.png)
JPA N+1 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우 첫 번째 조회 + 해당 갯수(N) 만큼 조회되는 현상을 말한다. 테이블은 다음과 같이 구성되어 있습니다. @Test void test_query_check() { Account account = AccountTemplate.makeTestAccountForIntegration(); List organizations = new ArrayList(); for (int i = 0; i < 10; i++) { organizations.add(OrganizationTemplate.makeTestOrganizationForIntegration("테스트"+i)); } Account newAccount = accountReposito..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/AVyyU/btrmMganbwA/PyAEU641Q6rK1kzt8f5HIK/img.png)
1. Object 생성자 @IntrinsicCandidate public Object() {} /** Returns the runtime class of this Object. The returned Class object is the object that is locked by static synchronized methods of the represented class. The actual result type is Class getClass(); Returns the runtime class of this Object. The returned Class object is the object that is locked by static synchronized methods of the represen..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dOvZIw/btrmzikmKy0/2AlDOl8NXhjZR6DbxthDPK/img.png)
의도 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴 활용성 부분-전체의 객체 계통을 표현하고 싶을 때 사용자가 객체의 합성으로 생긴 복합 객체와 개개의 객체 사이의 차이를 알지 않고도 자기 일을 할 수 있도록 만들고 싶을 때. 사용자는 복합구조의 모든 객체를 똑같이 취급 참여자 Component: 집합 관계에 정의될 모든 객체에 대한 인터페이스를 정의. 모든 클래스에 해당하는 인터페이스에 대해서는 공통의 행동을 구현. 전체 클래스에 속한 요소들을 관리하는 데 필요한 인터페이스를 정의한다. 순환 구조에서 요소들을 포함하는 전체 클래스로 접근하는 데 필요한 인터페이스를 정의하며, 적절하다면 그 인터페이스..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/byajPf/btrl3LIDvIF/wk7lMnM1sbhFAiE0wnYel1/img.png)
Exception 1. 컴파일 에러 컴파일 시에 발생하는 에러 2. 런타임 에러 프로그램의 실행도중에 발생하는 에러 3. 논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것 에러(error): 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception): 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외들로 자바의 프로그래밍 요소들과 관계가 깊다. Exception클래스들: 사용자의 실수와 같은 외적인 요인에 의해 발생되는 예외 RuntimeException클래스들: 프로그래머의 실수로 발생되는 예외 컴파일러가 예외처리를 확인하지 않는 RuntimeException클래스들은 'unche..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/slU8C/btrlTi74gbw/n4OTxlkb6NTBQfOcckA5w0/img.png)
의도 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 하는 것 활용성 추상적 개념과 이에 대한 구현 사이의 지속적인 종속 관계를 피하고 싶을 때. 이를테면, 런타임에 구현 방법을 선택하거나 구현 내요을 변경하고 싶을 때가 여기에 해당합니다. 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 통해 확장되어야 할 때. 이 때, 가교 패턴은 개발자가 구현을 또 다른 추상적 개념과 연결할 수 있게 할 뿐 아니라, 각각을 독립적으로 확장 가능하게 합니다. 추상적 개념에 대한 구현 내용을 변경하는 것이 다른 관련 프로그램에 아무런 영향을 주지 않아야 할 때. 즉, 추상적 개념에 해당하는 클래스를 사용하는 코드들은 구현 클래스가 변경되었다고 해서 다시 컴파일되지 않아야 합니다. 사용자들은 사용자..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YNWql/btrlDAHoekZ/iHJPoujYFQKcM5aVhS29J1/img.png)
자바에서 추상화 할 수 있는 방법은 추상화 클래스(abstract class)와 인터페이스 두가지 방법이 있다. 그렇다면 전자와 후자 둘 중 어떤 방법이 더 좋은 방법일까? 바로 인터페이스다. 그러한 이유를 설명해보도록 하겠습니다. 추상화 클래스 인터페이스 상속 갯수 1 N 확장성 이미 구현되어 있는 클래스에서 추상화클래스를 추가할려고 했을 때에는 기존 클래스가 이미 상속받고 있는 지 그리고 이미 명시되어 있는 메소드와 겹쳐 있는 지 확인해야 하는 작업이 필요하다. 추상화 클래스와 다르게 기존 클래스에서 상속받고 있는 지 확인하지 않아도 된다. 인터페이스의 메소드와 기존 클래스 메소드에서 겹친 것이 있더라도 오버라이딩 되면서 문제가 발생하지 않는다.(1) 방향 수직적 수평적 심지어 인터페이스에서 JDK1..
1. 상속 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 1. java 기본적으로 단일 상속만 지원해준다. 그래서 둘 이상을 상속받을 수가 없다. 그러한 이유는 다중 상속을 했을 때 생기는 문제점을 안고 있어서 이러한 것을 없애고자 단일상속만을 허용한다고 한다. (클래스 간의 관계가 명확해진다는 장점이 있다.) 2. Python 다중상속을 지원해준다. 순서는 오른쪽에서 왼쪽 방향으로 상속이 받아진다. 만일 오른쪽과 왼쪽이 같은 메서드가 있다고 했을 때 왼쪽의 메소드로 오버라이팅이 된다. 자바의 단일 상속은 다들 아시니 python 다중상속에 대해서 예시를 들어 설명해보겠습니다. class BaseMixins(object): def __repr__(self): return f'x는 1이고 y는 2..
- Total
- Today
- Yesterday
- django
- 자바
- Command Line
- Celery
- DRF
- 2021 KAKAO BLIND RECRUITMENT
- 파이썬
- 알고리즘
- Collections
- Spring
- Python
- ubuntu
- docker-compose
- 백준
- 그래프
- 면접
- dockerignore
- docker
- BFS
- 카카오
- postgres
- Java
- 프로그래머스
- env
- headers
- PostgreSQL
- thread
- setattr
- Pattern
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |