| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 서버리스 #
- 0.75px border
- github
- Strict
- Props
- 전역변수
- 문서번호
- 데이터베이스 #try #이중
- 클론코딩
- entity
- 1px border
- jwt
- Websocket
- 타입스크립트
- npm
- TS
- 컴포넌튼
- font-size
- 당근마켓
- ZOOM
- literal
- TypeScript
- 0.25px border
- 으
- ES5
- 0.5px border
- es6
- 10px
- &연산
- angular
- Today
- Total
목록분류 전체보기 (178)
복잡한뇌구조마냥
1. Thymeleaf란?자바 기반 서버 사이드 템플릿 엔진HTML 안에 변수를 바인딩하거나 조건문, 반복문 등을 지원JSP와 달리 HTML을 그대로 열어도 깨지지 않는다는 장점 (순수 HTML 친화적)Spring Boot에서는 spring-boot-starter-thymeleaf 의존성으로 쉽게 연동 가능2. 의존성 추가 (Gradle)dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web'}3. 기본 사용법(1) Controller @Controllerpublic class H..
1. Spring Data JPA란?JPA를 더 쉽게 쓰도록 도와주는 Spring 프로젝트반복적인 DAO/Repository 구현을 자동화인터페이스만 정의하면 CRUD 메서드를 자동 제공👉 JPA는 EntityManager를 직접 쓰지만, Spring Data JPA는 Repository 인터페이스 기반으로 훨씬 단순화됩니다.2. 의존성 추가 (Gradle) dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") runtimeOnly("com.h2database:h2")}3. Entity 예제 import jakarta.persistence.*;import lombok.Getter;import..
1. @Testorg.junit.jupiter.api.Test메서드를 테스트 메서드로 지정반환 타입은 void, public 필요 없음@Testvoid addTest() { int sum = 2 + 3; assertEquals(5, sum);}2. @DisplayNameorg.junit.jupiter.api.DisplayName테스트 이름을 한글/문장으로 지정 (출력 시 가독성↑) @Test@DisplayName("2 + 3은 5가 되어야 한다")void addTest() { assertEquals(5, 2 + 3);}3. @BeforeEach / @AfterEach각각 테스트 메서드 실행 전/후 실행되는 메서드 @BeforeEachvoid setup() { System.out.p..
1. ordinal() 메서드란?자바의 enum은 선언된 순서(0부터 시작) 를 기준으로 내부적으로 정수값을 가짐.ordinal() 메서드는 해당 상수가 몇 번째 위치인지 반환한다.public enum Ensemble { SOLO, DUET, TRIO, QUARTET;}System.out.println(Ensemble.SOLO.ordinal()); // 0System.out.println(Ensemble.DUET.ordinal()); // 12. 왜 ordinal()을 쓰고 싶어질까?SOLO는 1명, DUET은 2명, TRIO는 3명 … 처럼상수와 자연스럽게 정수값이 대응되는 경우가 많다.그래서 ordinal() 값을 그대로 비즈니스 로직에서 쓰고 싶다는 유혹이 생김. int size = Ensem..
1. 배경: 일반적인 제네릭 컨테이너의 한계제네릭 컬렉션(List, Map)은 타입 매개변수의 개수가 고정됨.하지만 여러 타입을 한 컨테이너에 안전하게 담고 싶을 때가 있음.예: DB Row, 설정값 저장소, 어노테이션 API 등단순히 Map를 쓰면 타입 캐스팅 필요 + 타입 안전성 상실. Map favorites = new HashMap();favorites.put("String", "hello");favorites.put("Integer", 123);// 잘못된 타입도 들어감 → 런타임 오류 가능favorites.put("Integer", "oops");2. 타입 안전 이종 컨테이너 패턴의 아이디어컨테이너가 아니라 키에 타입 매개변수를 부여하자.즉, Map, Object>를 이용해서 키 자체가 타입 ..
1. JPA란?JPA(Java Persistence API): 자바 진영의 ORM(Object Relational Mapping) 표준 인터페이스객체와 테이블 매핑을 도와주는 스펙 (구현체: Hibernate, EclipseLink 등)SQL 직접 작성 대신 객체 중심으로 데이터베이스 다룸👉 즉, “자바 객체를 DB 테이블과 자동으로 매핑해주는 기술”2. JPA를 쓰는 이유SQL 작성 줄임 → CRUD 대부분 자동 처리객체 모델과 테이블 모델의 불일치(패러다임 불일치) 해결유지보수성, 확장성 향상📌 전통적인 방식 String sql = "INSERT INTO member (id, name) VALUES (?, ?)";PreparedStatement pstmt = conn.prepareStatement..
1. 리플렉션이란?런타임에 클래스, 메서드, 필드, 생성자 등에 접근할 수 있는 자바 API즉, 코드가 실행되는 도중에 객체의 타입을 확인하고 동적으로 동작을 바꿀 수 있음java.lang.reflect 패키지에 포함👉 컴파일 시점에 알 수 없는 클래스/메서드를 런타임에 다룰 수 있다2. 왜 필요한가?프레임워크/라이브러리(예: Spring, JPA) 내부 동작객체 자동 주입, 어노테이션 기반 설정런타임 로딩설정 파일(XML/Properties)에 적힌 클래스명을 읽어 객체 생성테스트/디버깅private 필드 접근, 동적 프록시 생성 등3. 기본 사용법클래스 정보 가져오기 // 3가지 방법Class clazz1 = Class.forName("com.example.Member");Class clazz2 =..
1. 로 타입(Raw Type)이란?제네릭(Generic) 문법에서 타입 매개변수를 지정하지 않은 타입.예:List list = new ArrayList(); // 로 타입List처럼 구체적인 매개변수화 타입을 쓰지 않은 상태.2. 로 타입이 문제인 이유타입 안전성(Type Safety) 손실컴파일러가 타입 검증을 못 하므로 잘못된 타입이 들어가도 컴파일 단계에서 안 잡힘.List list = new ArrayList();list.add("문자열");list.add(123); // 컴파일 OK, 런타임에서만 문제 발생 가능표현력 감소코드에서 어떤 타입을 의도했는지 알 수 없어 가독성↓, 유지보수성↓에러 검출 시점 지연문제를 런타임에서야 발견 → 디버깅 난이도 상승.컴파일러 최적화·도움 불가타입 추론이 안..
