POJO란 무엇일까?
·
JAVA
POJO 는 Plain Old Java Object 의 약자로, 우리말로는 평범한 옛날 자바 객체 또는 순수 자바 객체 로 번역된다.이름 그대로, 특정 프레임워크나 기술에 종속되지 않고, 순수하게 자바의 기본적인 문법만으로 만들어진 객체를 의미한다. 2000년대 초반, 당시 유행하던 EJB(EnterPRise JavaBeans)처럼 복잡하고 무거운 엔터프라이즈 프레임워크에 대한 대응으로 POJO 가 생겼다. EJB 는 개발자들이 비즈니스 로직보다는 프레임워크의 특정 규직(특정 인터페이스 구현, 특정 클래스 상속)을 따르는데 더 많은 시간과 노력이 들이게 만들었다. 이에 대해 마틴 파울러 같은 소프트웨어 전문가들을 프레임워크의 제약 없이 비즈니스 로직에 집중하여 객체를 설계하는 것의 중요성을 강조했고, 이..
[Java] Java 에서는 객체 복제를 어떻게 할까?
·
JAVA
Java 에서는 객체 복제를 해야 하는 경우가 종종 있습니다.기존에 있는 원본 데이터에 영향을 안 주고, 같은 객체를 따로 만들어서 쓰기 위해 복제를 합니다.기존에는 = 연산자를 통해 객체를 복사했지만, 이 방법은 실제로 객체를 복제하는 것이 아니라 원본 객체의 주소만 공유하는 방식입니다. 따라서 복사본을 수정하면 원본 객체에도 영향을 줄 수 있기 때문에, 진짜 복제가 필요할 경우 이제 우리가 알아볼 clone 메소드를 사용합니다.기존 = 연산자를 사용해서 객체를 복사하면 생기는 결과를 예시로 먼저 보여드리겠습니다.이런식으로 객체를 복사하고, 복사한 객체를 수정하게 된다면 같은 주소를 참조하고 있기 때문에 기존 객체도 함께 수정이 됩니다.그러면 이제 객체 복제를 하는 법에 대해 알아보겠습니다.객체 복제에..
[Java] Jave 의 컬렉션 프레임워크는 무엇일까?
·
JAVA
자바의 컬렉션 프레임워크는 데이터를 효율적이고 일관된 방식으로 저장, 검색, 수정, 삭제할 수 있도록 도와주는 자료구조 클래스와 인터페이스들의 집합입니다.프로그래밍하면서 데이터를 모으고, 정렬하고, 삭제하고, 다시 꺼내 쓰는 작업을 자주 하게 되는데, 이럴 때 필요한 기능들을 표준화된 방식으로 제공해주는 것이 바로 컬렉션 프레임워크입니다.데이터 관련해서 수정하고 작업한다? 그러면 많이 사용했던 클래스들이 있죠?대표적인 컬렉션 인터페이스로는 List, Set, Map, 그리고 이를 구현한 ArrayList, HashSet, HashMap 등이 있습니다. 자바에서의 프레임워크는 뼈대입니다. 우리가 사용했던 스프링도 이 프레임워크에 속하죠.개발자가 필요한 기능만 추가하거나 수정해서 쓸 수 있도록 재사용 가능한..
[Java] Generics은 무엇이고 왜 사용할까?
·
JAVA
자바에서 제네릭은 클래스, 인터페이스, 메소드에서 사용할 데이터 타입을 코드 작성 시점이 아닌, 실제 사용할 때 지정할 수 있도록 해주는 기능입니다. -> 타입을 변수처럼 다루는 기능 예전에 다운 캐스팅과 업캐스팅을 공부할 때 캐스팅 개념이 너무 어려웠는데, 제네릭을 사용하면 이러한 명시적인 형변환(casting)을 하지 않아도 되기 때문에 훨씬 편리합니다. 캐스팅(casting)은 한 타입을 다른 타입으로 변환하는 과정입니다.예를 들어, Object 타입을 String 타입으로 변환하려면 명시적으로 캐스팅을 해야 합니다. 제네릭은 타입을 미리 지정해주는 기능이기 때문에, 컴파일 시점에 타입을 결정할 수 있습니다. 그래서 캐스팅을 하지 않아도 되며 타입 안전성을 보장해줄 수 있습니다. 예를 들어 List..
[Java] 인터페이스를 사용하는 이유는 무엇일까?
·
JAVA
오늘은 자바의 인터페이스(interface) 를 사용하는 이유에 대해 알아보겠습니다.먼저, 인터페이스란 무엇일까요?자바에서 인터페이스는 클래스들이 따라야 할 기능의 틀(명세) 을 정의해 놓은 일종의 규약입니다. 즉, 어떤 기능을 제공해야 하는지를 명시해두는 것이죠. 인터페이스는 메소드의 선언만 포함하고, 실제 로직은 구현하지 않습니다.이렇게 만들어진 인터페이스는 서비스 클래스나 구현 클래스에서 실제 로직을 작성하게 됩니다.이 구조는 바로 다형성(Polymorphism) 과 밀접한 관련이 있습니다.상속 관계에 있는 여러 클래스들이 같은 인터페이스를 구현하면서, 각각의 클래스에서 자신만의 방식으로 메소드를 구현할 수 있게 됩니다.그런데 만약 우리가 인터페이스 없이, 클래스마다 반복해서 같은 메소드들을 정의하..