분류 전체보기

JAVA

Java 객체 비교: equals()와 hashCode()로 보는 물리적 vs 논리적 동등성

Qna. equals와 hashcode 메서드를 사용하는 이유객체의 동등성 비교와 해시 기반 자료구조에서 일관된 동작을 보장하기 위해 equals와 hashcode 메서드를 사용한다. 객체의 동등성 (Equaility)1. 물리적 동일성== 연산자를 사용하여 두 객체의 메모리 주소(참조값)가 같은지 비교합니다.String a = "hello";String b = "hello";System.out.println(a == b); // true (String Pool 덕분)String c = new String("hello");System.out.println(a == c); // false (다른 객체) 2. 논리적 동일성equals 메서드를 오버라이딩하여 객체의 내부 상태(멤버 변수)를 비교할 수 있습니다..

Python

Python defaultdict: 딕셔너리 기본값 자동 설정 및 활용법

defaultdict()dict 클래스의 서브 클래스로, 기본값을 지정할 수 있는 딕셔너리입니다.num, list, set 등으로 초기화할 수 있습니다.from collections import defaultdict defaultdict(int)int_dict = defaultdict(int)print(int_dict)print(int_dict["test"])# defaultdict(, {})# 0 처음 키를 지정할 때 값을 설정하지 않아도, 해당 Key에 대한 값을 Default로 설정할 수 있다.특정 값의 카운팅을 처리할 때 용이하다.char_count = defaultdict(int)for char in s: char_count[char] += 1 # key가 없어도 자동으로 0에서 시작 d..

Spring Framework/Spring

Spring JDBC vs SQL Mapper vs ORM 차이점 비교 (장단점)

위 글은 유튜브 우아한테크 채널에 도이님 발표 영상을 바탕으로 작성한 글입니다.https://www.youtube.com/watch?v=RWFtuQUx3fo JDBC JAVA에서 범용 데이터 액세스를 위한 표준 인터페이스이다. 순수 JDBC 불편한 점개발자가 모든 코드를 직접 작성해야 한다. 이로 인해 중복 코드가 많아지는 문제가 발생한다. 이를 해결하기 위해 영속성 프레임워크가 생겨나고, 중복된 작업을 처리해줍니다.반복적인 작업들을 추상화하고 편리함 제공ex) DB 연결, 해제, CRUD 등 SQL MapperSQL 문과 객체의 필드를 매핑하여, 관계형 DB의 데이터를 객체화하는 프레임워크이다.직접 작성한 SQL 문과 필드를 매핑하고, 조회 결과의 ROW를 객체화합니다.JDBC Template, MyB..

Spring Framework/Spring

Java ORM 사용 이유 및 장단점 완벽 정리 (JPA, Hibernate)

Qna. ORM이란 무엇인가?객체와 데이터베이스의 관계를 자동으로 매핑해 준다.또한, 객체 지향적으로 데이터를 저장하고 조회할 수 있다. 즉, SQL을 직접 사용하지 객체 지향 언어의 문법으로 데이터베이스를 조작할 수 있다. Qna. ORM의 장단점은 무엇인가?장점생산성 향상JPA에서 기본적인 CURD 지원과 Java 언어로 데이터베이스 조작이 간단하다.보안성 강화SQL Injection 같은 보안 취약점 방지 (ORM이 내부적으로 SQL을 안전하게 생성)단점높은 학습 곡선관련 기술을 익히고, 발생할 수 있는 성능 이슈 문제를 전부 파악하고 있어야 효율적으로 사용할 수 있다.복잡한 쿼리를 해결하기 어렵다. 세부적인 쿼리 최적화는 어렵다.동적 쿼리와 같은 문제는 QueryDSL을 통해 처리할 순 있다.성능..