전체 글46 문자 vs 바이너리 & 이미지가 바이너리인 이유 📝 chatGPT와의 문답📙 이미지가 바이너리 파일인 이유와 표현 방식1. 이미지가 바이너리 파일인 이유파일에는 문자 파일과 바이너리 파일 두 가지가 있습니다. 문자 파일은 사람이 읽을 수 있는 텍스트로 구성된 파일이고, 바이너리 파일은 컴퓨터가 처리할 수 있는 이진 데이터(0과 1)로 구성된 파일입니다. 이미지 파일은 픽셀 데이터를 저장해야 하므로 효율적인 이진 데이터 형태로 저장됩니다.2. 바이너리로 이미지를 표현하는 방법이미지는 픽셀 단위로 색상, 밝기 등의 정보를 저장하며, 이를 숫자 데이터로 변환해 바이너리 파일로 표현합니다.이미지 표현 과정픽셀(Pixel) 기반 데이터이미지는 작은 점(Pixel)들로 이루어져 있습니다.각 픽셀의 색상은 RGB 값(Red, Green, Blue)으로 표현됩니.. etc 2025. 1. 13. 스프링 MVC 학습목록 (2) 📝 학습목록 & GPT에게 물어본 질문 목록📙 1. 스프링 타입 컨버터1) Converter컨버터는 org.springframework.convert.converter.Converterpublic interface Conveter { T convert(S source);}인터페이스를 구현하여 만든다.2) ConversionService스프링은 개발 컨버터를 모아두고 그것을 묶어서 편리하게 사용할 수 있는 기능을 준다그것이 ConversionService 인터페이스package org.springframework.core.convert;import java.util.List;public interface ConversionService { boolean canConvert(Class source.. spring 2025. 1. 8. 이펙티브 자바 : 용어 정리 & 이해불가 구문 해석 📚 1. 시그니처이펙티브 자바(Effective Java)에서 언급하는 시그니처(signature)는 주로 메서드 시그니처를 의미합니다. 메서드 시그니처는 자바에서 메서드를 식별하고 구분하는 데 사용되는 중요한 요소로, 다음과 같은 구성 요소로 이루어져 있습니다:메서드 이름(Method Name): 메서드의 이름 자체.매개변수 목록(Parameter List): 메서드가 받는 매개변수의 타입과 순서.메서드 시그니처에 포함되지 않는 요소:반환 타입(Return Type): 메서드가 반환하는 값의 타입은 시그니처에 포함되지 않습니다.예외(Exception): 메서드가 던질 수 있는 예외도 시그니처의 일부가 아닙니다.접근 제어자(Access Modifiers): public, private 등 접근 제어자는.. BOOK/JAVA 2024. 12. 29. 이펙티브 자바 : Item1. 생성자 대신 정적 팩터리 메서드를 고려하라 📝 Effective Java: 생성자 대신 정적 팩터리 메서드를 고려하라Effective Java의 저자 조슈아 블로크(Joshua Bloch)는 생성자 대신 정적 팩터리 메서드를 사용하는 것을 권장하며, 그 이유로 여러 가지 장점을 제시하고 있습니다. 아래에서 각 장점과 단점을 코드 예시와 함께 자세히 설명하겠습니다.정적 팩토리 메서드의 장점1. 이름을 가질 수 있다생성자는 클래스 이름을 가지므로, 여러 생성자가 있을 경우 구분이 어렵습니다. 반면, 정적 팩토리 메서드는 의미 있는 이름을 가질 수 있어 코드 가독성이 향상됩니다.예시:public class User { private String username; private String email; private User(Strin.. BOOK/JAVA 2024. 12. 29. JPA @MappedSuperClass 📝 @MappedSuperclass란?@MappedSuperclass는 JPA에서 공통 속성을 여러 엔티티 클래스에 재사용할 수 있게 해주는 슈퍼클래스를 정의할 때 사용되는 어노테이션입니다. 이 슈퍼클래스는 엔티티가 아니며, 따라서 데이터베이스에 별도의 테이블이 생성되지 않습니다. 대신, 이 슈퍼클래스를 상속받는 서브클래스 엔티티의 테이블에 슈퍼클래스의 필드가 포함됩니다.주요 포인트:엔티티가 아님: @MappedSuperclass로 선언된 클래스는 JPA 엔티티가 아니므로 데이터베이스에 별도의 테이블이 생성되지 않습니다.공통 속성 상속: 슈퍼클래스의 필드와 매핑 정보가 서브클래스 엔티티에 상속되어 테이블에 포함됩니다.단일 테이블 전략과의 차이: 다른 상속 매핑 전략과는 달리, 슈퍼클래스 자체는 별도의 .. JPA 2024. 12. 28. JPA 학습목록 📝 GPT에게 물어본 질문 목록 1) 연관관계 매핑 (1:N vs N:1)JPA 에서 N대1은 테이블에서 자식테이블에 FK가 있듯이 객체관에 관계에서도 N 쪽이 연관관계의 주인을 가져가잖아반면에 1대N은 연관관계의 주인을 1쪽이 가져가잖아 (ex. TEAM, MEMBER)굳이 이렇게 하는 이유가 있을까?@OneToMany @JoinColumn(name="TEAM_ID") List members = new ArrayList();2) mappedBy 가 필요한 이유JPA 객체간의 양방향 처리를 할때 (객체 : MEMBER, TEAM)@OneToMany(mappedBy="team") 이렇게 처리를 해주잖아 왜 해주는거지?안해주면 생기는 문제가 뭐야?어차피 연관관계 메서드로 동기화처리 해주잖아./* 연관관계 .. JPA 2024. 12. 21. JPA에서 단방향 매핑을 우선으로 하는 이유 (단방향 → 필요시 양방향) 📝 JPA 단방향 매핑과 양방향 매핑왜 단방향 매핑을 우선적으로 사용하는가?단순성과 유지보수성단방향 매핑은 코드를 단순하게 만들고 유지보수를 용이하게 합니다.양방향 매핑은 객체 간의 관계를 양쪽에서 관리해야 하므로 복잡도가 증가합니다.성능단방향 매핑은 필요 없는 추가 쿼리 생성을 방지합니다.양방향 매핑은 잘못 사용할 경우 예상치 못한 SELECT나 UPDATE 쿼리가 발생할 수 있습니다.연관관계의 복잡성양방향 매핑은 두 객체 간의 관계를 양쪽에서 동기화해야 하므로 연관관계 편의 메서드를 잘못 작성하거나 누락하면 데이터 불일치가 발생할 수 있습니다.단방향 매핑과 양방향 매핑의 차이1. 단방향 매핑 (추천)@Entitypublic class Member { @Id @GeneratedValue p.. JPA 2024. 12. 9. JPA 엔티티 양방향 관계에서 연관관계 주인이 필요한 이유 📝 JPA 연관 관계의 주인 11. 문제 상황: 양방향 관계에서 외래 키 관리 충돌예제 설계Team과 Member는 양방향 관계로 설계되어 있습니다.Team은 여러 Member를 가질 수 있으며, Member는 하나의 Team에 속합니다.데이터베이스에서는 Member 테이블에 TEAM_ID라는 외래 키가 존재합니다.문제 코드@Entitypublic class Team { @Id @GeneratedValue private Long id; @OneToMany @JoinColumn(name = "TEAM_ID") // Team도 외래 키를 관리하려고 시도 private List members = new ArrayList();}@Entitypublic class Member {.. JPA 2024. 12. 9. JPA 엔티티의 객체지향적 설계 package jpashop.jpaorder.domain;import javax.persistence.*;import java.time.LocalDateTime;@Entity@Table(name = "ORDERS")public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @Column(name = "MEMBER_ID") private Long memberId; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus orderStatus;} ❓ 이런 방식의 설계는 객체지향스럽지 않다 RDB에 맞춘 설계이다 객.. JPA 2024. 12. 9. JPA PK 생성전략 @GeneratedValue(strategy = GenerationType.❓) 📝 JPA GenerationType 비교1. GenerationType.IDENTITY특징: 데이터베이스에 의존하여 기본 키를 생성합니다.동작 방식:PK는 데이터베이스에서 AUTO_INCREMENT 또는 IDENTITY 컬럼으로 생성됩니다.em.persist() 호출 시 즉시 INSERT 쿼리를 실행하고, 데이터베이스가 생성한 키 값을 가져옵니다.장점: 설정이 간단하며, 데이터베이스의 ID 생성 기능을 그대로 활용.단점:PK가 INSERT 이후에 결정되므로, 다른 엔티티와 연관 관계를 처리할 때 비효율적.INSERT 지연이 불가능.추천 상황: 데이터베이스에 ID 생성 위임이 필요할 때.2. GenerationType.SEQUENCE특징: 데이터베이스의 시퀀스 객체를 사용하여 PK를 생성.동작 방식:J.. JPA 2024. 12. 9. 자바 enum 📝 자바 Enum 상세 설명 및 활용 예제enum은 자바에서 열거형 데이터 타입으로, 서로 관련 있는 상수들의 집합을 표현하는 데 사용됩니다. 타입 안전성을 보장하며, 추가 필드와 메서드를 가질 수 있어 매우 유용합니다.1. 기본 구조public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;} 2. 특징타입 안전성 보장: 특정 enum 값만 사용할 수 있도록 제한.가독성 향상: 코드의 의미를 명확하게 전달.Switch 문에서 사용 가능: 가독성과 유지 보수성을 높임.메서드와 필드 정의 가능: 추가적인 데이터와 동작을 포함 가능.Singleton 패턴 유사성: enum 값은 JVM에서 하나의 인스턴스로만 존.. Java 2024. 12. 9. 자바 리플렉션 📝 Java ReflectionJava Reflection은 런타임(Run-time)에 클래스, 메서드, 필드 등의 정보를 동적으로 탐색하고 조작할 수 있는 기능을 제공하는 Java API입니다. 즉, 코드 실행 중에 클래스의 구조를 검사하거나 조작할 수 있습니다.리플렉션은 java.lang.reflect 패키지와 java.lang.Class 클래스를 통해 제공됩니다.1. 리플렉션의 주요 기능클래스 정보 조회: 클래스 이름, 패키지 이름, 부모 클래스, 구현 인터페이스 등의 정보를 확인할 수 있습니다.필드(Field) 조회 및 수정: 클래스의 멤버 변수를 동적으로 읽고 수정할 수 있습니다.메서드(Method) 호출: 클래스의 메서드를 동적으로 호출할 수 있습니다.생성자(Constructor) 호출: 클.. Java 2024. 12. 7. 이전 1 2 3 4 다음