썸네일 객체지향 설계 5원칙 SOLID 1. 단일책임원칙 (SRP) 객체 지향 원칙 설계의 5원칙은 1. SRP  : 단일 책임 원칙2. OCP : 개방 폐쇄 원칙3. LSP  : 리스코프 치환 원칙4. ISP : 인터페이스 분리 원칙5. DIP  : 의존 역전 원칙 이 있다.그 중 첫번째 원칙, SRP에 대해 알아보겠다.단일책임원칙 (SRP : SingleResponsibilityPrinciple)클래스를 변경하는 이유가 단 한가지 여야 한다. 단일 책임 원칙은 SRP, Single Responsibility Principle 즉, 단일 책임원칙이다. 객체지향에서 지켜야 할 원칙 중 하나이며, 하나의 클래스가 하나의 책임만을 가지고 있어야 한다. 라는 것이다.  하지만 언뜻 보면 하나의 클래스가 하나의 역할만을 해야 한다 라는 뜻으로 오해할 수 있다. 이런 의미가 아니..
썸네일 [Java] hashCode()와 equals()란? Java를 공부하다보면, 프로그래밍 시 'hashCode()' 와 'equals()' 메소드에 대해 많이 접하게 된다. 이 메소드들은 객체의 동등성 비교와 해시 맵(HashMap) 등의 자료 구조에서 효율적인 검색을 위해 사용되는 중요한 메소드이다. 이번 글에서는 hashCode()와 equals() 메소드에 대해 자세하게 정리해보려고 한다. hashCode() Method hashCode() 메소드는 객체의 해시코드를 반환하는 메소드이다. 먼저, 해시코드란 데이터를 빠르게 저장하고 검색하기 위해 사용되는 임의의 길이의 고정된 크기의 값이다. 이는 hashCode() 메소드를 통해 객체의 해시코드를 얻을 수 있다. 일반적으로 hashCode() 메소드는 객체의 필드를 기반으로 해시 코드를 생성하며, 주요..
썸네일 [Java] '깊은 복사'와 '얕은 복사'란? 오늘 정리할 내용은 자바에서의 깊은 복사 와 얕은 복사이다. 배열이나 객체를 복사해서 사용하는 경우가 발생할 수 있는데, 이때 JAVA에서 깊은 복사와 얕은 복사에 대해 배웠었다. 이 차이점을 명확히 해야 헷갈리지 않기 때문에 정리해두고자 한다. Deep Copy vs Shallow Copy 깊은복사 (Deep Copy) : '실제 값'을 새로운 메모리 공간에 복사한다. (힙 영역) 얕은복사 (Shallow Copy) : '주소 값'을 복사한다. (스택영역) 사실상, 이렇게만 설명하게 되면.. 이해를 못하는 경우가 많다. 따라서 예를 들어 설명해보자 얕은복사(Shallow Copy) class Person { private String name; private int age; public Person(S..
썸네일 JPA 와 Mybatis란 무엇인가? / JPA와 Mybatis의 차이 백엔드에서 데이터베이스를 사용하는 프레임워크로, 가장 많이 쓰이는 기술이 'Mybatis' 와 'JPA' 이다. 데이터베이스 접속을 편하게 사용하기 위해 SQL Mapper 기술과, ORM(Object Relational Mapping) 기술을 제공한다. SQL Mapper 는 '개발자가 작성한 SQL 실행 결과를 객체에 매핑' 시켜주는 프레임워크이며, ORM은 객체와 DB의 데이터를 '자동으로 매핑' 시켜주는 프레임워크이다. SQL Mapper 기술을 제공하는 것이 Mybatis 이며, ORM 기술을 제공하는 것이 JPA 이다. 📌 JPA 란? (Java Persistence API) 자바의 ORM 기술을 쉽게 구현하도록 도와주는 API이다. 즉, 자바에서 객체를 데이터베이스에 저장하고 관리하기 위한 ..
썸네일 [Java] Java8, Java11, Java17의 차이 및 기능 Java8, Java11, Java17 수많은 버전들이 있다고 이야기 하지만, 이 버전들에 대해서 이게 무엇이고 어떤 차이가 있는지는 잘 몰라서 정리해보았다. Java8, Java11, Java17 이것들은 오라클(Oracle)이나 다른 개발자 및 커뮤니티에 의해 개발된 자바 프로그래밍 언어의 여러 버전을 말한다. 이러한 버전들은 자바 플랫폼의 주요 업데이트이며, 각각 새로운 기능과 개선사항이 포함되어 있다. Java 8 1. 람다 표현식(Lambda Expressions) : 함수형 프로그래밍을 지원하기 위해 람다 표현식이 도입되었다. 람다 표현식을 통해 코드를 간결하게 작성하고 병렬 처리를 용이하게 할 수 있다. 2. 스트림 API(Stream API) : 컬렉션 처리를 위한 새로운 API로, 병렬처..
썸네일 [Spring] 스프링 부트에서 auto-configuration을 비활성화하는 방법 Spring Boot는 자동구성(Auto-Configuration)기능을 통해 애플리케이션을 빠르게 구축하고 시작할 수 있는 강력한 기능을 제공한다. 하지만 때로는 특정 모듈의 자동 구성이 원치 않는 동작을 할 수 있다. 이럴때는 해당 자동 구성을 비활성화할 필요가 있다. @SpringBootApplication 어노테이션의 Exclude 속성 사용 @SpringBootApplication 어노테이션을 사용하여 애플리케이션 클래스를 정의할 때, exclude 속성을 사용하여 특정 자동구성을 비활성화할 수 있다. @SpringBootApplication(exclude = {SomeAutoConfiguration.class}) public class MyApplication { public static vo..