Java

    제네릭에 대한 간단한 정리

    모든 소스 코드는 https://github.com/lkimilhol/tistoryblog에서 확인 가능합니다! 안녕하세요. 이번에는 제네릭을 살펴볼까 합니다. 많은 분들이 generic에 이해하고 계실텐데요. 간단한 예제 정도로 정리만 해보려고 해요. (사실 코딩할때 제네릭을 잘 써본적이 없었거든요) 1. 제네릭을 사용하는 이유? 제네릭을 사용하는 이유는 무엇일까요? 저는 제네릭을 사용하는 이유에 대해서 타입 체크가 컴파일 타임에 이루어 진다. 리턴 타입을 제한 할 수 있다. 로 이해하였습니다. 예시를 들어보겠습니다. 1. 타입 체크가 컴파일 타임에 이루어 진다. UseClass.java public class UseClass { public void exceptionExample() { List te..

    Java의 Call by value, Call by reference

    안녕하세요. 정리 된 글이 많지만 오늘 call by value, call by reference에 대해서 다시한번 차근차근 알아보려고 합니다! (워낙 헷갈려서요) 테스트케이스 하나를 작성해서 실제로 값이 어떻게 들어있는지 확인을 해보도록 하겠습니다. Java 소스코드는 https://github.com/lkimilhol/tistoryblog 에서 확인 가능합니다. 1. Call by Value 개념을 정리해 보고 넘어가보도록 하죠. Call by Value란 무엇일까요? 직역하면 '값에 의한 호출' 이라고 하는데, 도통 무슨 소리인지 알 수가 없습니다. 값에 의한 호출은 메서도 인자로 값을 넘길 때 값을 '복사' 해서 넘기게 되는데요. 이 때문에 원본의 값은 변하지 않습니다. 다음 예시를 좀 보려고 하..

    간단한 Spring AOP 개념과 적용

    안녕하세요. 이번에는 AOP를 적용해볼까 합니다. AOP 공부를 하면서 용어들이 헷갈리기에 정리 할 시간을 가져보려고 하는데요. 한번 천천히 알아보도록 하겠습니다. 모든 코드는 https://github.com/lkimilhol/tistoryblog에서 확인 가능합니다. 1. AOP란? AOP의 개념은 많은 분들이 아실거라 생각해요. AOP란 Aspect Oriented Programing의 약자로써 관점지향 프로그래밍이라고 불립니다. 그렇다면 관점지향 프로그래밍이란 무엇일까요? 제가 생각하는 관점지향 프로그래밍이란 공통의 관심사를 묶어놓는 프로그래밍이라고 생각하는데요.즉, 주요 기능과 부가 기능이 있을 때 공통 되는 부가기능을 하나의 처리로 묶고 주요 기능의 소스코드와 분리를 시키는 것이라고 생각해요...

    간단하게 상속과 조합을 이해해보기

    안녕하세요. 이번에는 상속과 조합에 대해서 고민을 해보려고합니다. 상속은 인터페이스의 상속, 확장을 뜻하는 것이 아닌 클래스를 상속 받아 확장하는 것으로 제한 하겠습니다. 모든 소스 코드는 https://github.com/lkimilhol/tistoryblog 에서 확인 할 수 있습니다. 예제를 보도록 하겠습니다. 우리는 카드를 통해 게임을 구현하려 합니다. 이 게임은 카드 뭉치 속에 내가 택한 번호가 있는지를 가려냅니다. 1. 어떤 문제가 있을까? Cards.java class Cards { protected List numbers = new ArrayList(); protected Cards() {} protected Cards(List numbers) { this.numbers = numbers;..

    JPA N+1 문제

    안녕하세요. 이번에는 N+1 문제를 다루어 보았습니다. N+1 문제는 JPA를 사용하면 자주 만날 수 있는 문제이지만 자칫 잘못하면 예상치 못한 곳에서 N+1 문제를 만날 수 있다고 생각해요. 따라서 문제의 원인을 머릿속에 두고 테스트케이스를 통해 원하는 결과가 잘 나오는지 확인해 보는 습관을 길러보도록 합시다! 모든 소스 코드는 https://github.com/lkimilhol/tistoryblog 에서 확인 할 수 있습니다. 저는 유저와 유저가 가지고 있는 컴퓨터를 개념적으로 표현하였고 유저들은 다수의 컴퓨터를 가질 수 있도록 연관관계를 맺었습니다. 결국 유저와 컴퓨터는 1:N의 관계를 가지게 됩니다! 먼저 유저 클래스를 보도록 하겠습니다. 1. N+1 구현하기 User.java @Entity pu..