전체 글 72

TIL 36 : EntityManagerFactory, EntityManager, EntityTransaction

DB랑 놀기 위한 삼총사 😎EntityManagerFactory (팩토리 공장장)📌 무거운 객체라서 애플리케이션 시작 시 딱 한 번만 만들어야 함.💼 DB와 연결 설정, 커넥션 풀 등 리소스를 미리 준비해두는 공장 같은 역할.📦 EntityManager를 만들어주는 공장(Factory) 역할.EntityManagerFactory emf = Persistence.createEntityManagerFactory("entity");🔧 여기서 "entity"는 persistence.xml에 등록한 persistence-unit 이름. 2. EntityManager(DB 작업 담당 직원)🧍‍♀️ 이걸로 진짜로 DB 조회, 저장, 수정, 삭제 같은 작업을 함.📌 가벼운 객체, 스레드 안전하지 않아서 ..

코딩/sparta TIL 2025.04.16

TIL 35 : 예외처리 복습

자바에서 Exception은 다시 2가지로 나뉩니다.Checked ExceptionUnChecked ExceptionChecked Exception 은 반드시 try-catch나 상위 메소드로 throws 처리를 해야 하는 예외를 말합니다. 처리를 하지 않고 컴파일을 시도하면 오류가 발생하며 실패 합니다.UnChecked Exception 은 별도 Exception을 처리하지 않아도 컴파일이 가능하고 프로그램 실행도 정상적으로 됩니다. 장점단점Checked Exception- 예외 처리 강제 → 코드 안정성 향상 - 예외 발생 가능성을 명확히 문서화- 가독성이 떨어짐 → 코드 생산성 하락 - 불필요한 예외 처리로 코드 복잡성 증가Unchecked Exception- 단순하고 가독성 높은 코드 작성 가능 ..

코딩/sparta TIL 2025.04.15

TIL 34 : HttpMessageConverter

View를 응답하는 것이 아닌, Rest API(HTTP API)로 JSON, TEXT, XML 등의 데이터를 응답 Message Body에 직접 입력하는 경우 HttpMessageConverter를 사용한다.1. SSR → @Controller + View Template → 서버 측에서 화면을 동적으로 그린다. 2. CSR → @RestController + Data → 클라이언트 측에서 화면을 동적으로 그린다. 3. 실제로는 두가지 기술이 함께 사용되는 경우가 많다. HttpMessageConverter 동작 순서HTTP 응답 메세지 Body에 데이터를 직접 입력 후 반환한다.요청 Accept Header + Controller 반환 타입ViewResolver가 아닌 HttpMessageConver..

코딩/sparta TIL 2025.04.15

[Java] String 관련 메서드

🔤 문자열 생성 & 변환메서드설명예시String.valueOf(숫자)숫자 → 문자열 변환String.valueOf(123) → "123"Integer.toString(숫자)숫자 → 문자열Integer.toString(10) → "10"String str = "abc";문자열 생성"abc"🔍 문자열 내용 확인메서드설명예시length()문자열 길이"hello".length() → 5charAt(int index)특정 문자 얻기"cat".charAt(1) → 'a'contains(String s)포함 여부"hello".contains("ell") → truestartsWith(String s)접두사 확인"hello".startsWith("he") → trueendsWith(String s)접미사 확인"he..

코딩/Java 2025.04.14

[Java] Integer란

📌 Java에서 int는 기본 자료형(primitive type)이고, Integer는 int를 객체처럼 다룰 수 있도록 해주는 “Wrapper Class(래퍼 클래스)”기본형래퍼 클래스intIntegerdoubleDoublecharCharacter✅ 왜 래퍼 클래스가 필요할까?int는 그냥 숫자일 뿐이고, 객체처럼 다룰 수 없어서 메소드도 없음Integer는 숫자를 감싼 객체니까, 숫자를 문자열로 바꾸거나, 비교하거나, 변환하거나 할 때 유용함✅ Integer의 주요 메소드 & 기능 정리메소드설명예시parseInt(String s)문자열을 int로 변환Integer.parseInt("123") → 123parseInt(String s, int radix)문자열을 주어진 진법으로 해석Integer.pa..

코딩/Java 2025.04.14

[Java] StringBuilder란

자바에서 문자열을 효율적으로 만들고 조작할 수 있게 해주는 클래스 일반적으로 문자열(String)을 더할 때마다 새로운 문자열 객체가 만들어집니다.Spring s ="";s += "a"; // 기존 ""은 그대로 있고, "a"는 새로 만들어져 s가 그것을 가리킴s는 이제 "a"s += "b"; // s는 이제 "ab", 그런데 메모리상에서는 새로운 "ab"가 만들어짐위와 같이 할 경우 성능적으로 비효율적. > "", "a"는 더 이상 s와 연결되어 있지 않음 → 가비지 컬렉터(GC)가 대상이 될 수 있음💡 그럼 "a"는 메모리에서 언제 사라지나?Java는 가비지 컬렉션(Garbage Collection)이라는 기능을 통해 “더 이상 사용되지 않는 객체”를 자동으로 메모리에서 제거합니다."a"를 가리키는..

코딩/Java 2025.04.14

유클리드 호제법 (Euclidean Algorithm)

두 수의 최대공약수(GCD)를 빠르게 구하는 알고리즘 🔸 개념두 수 a와 b가 있을 때, a % b의 나머지를 구하고b와 그 나머지로 다시 최대공약수를 구하는 과정을 반복하면결국 최대공약수가 나온다. 📌 재귀 공식gcd(a, b) = gcd(b, a % b)gcd(a, 0) = a 🔍 예시: gcd(48, 18)계산 단계aba % b148181221812631260👉 마지막 b = 6일 때, 나머지가 0이 되므로 최대공약수는 6 ✅ 유클리드 호제법 자바 구현int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b);}  ✅ 최소공배수(LCM)는 이렇게 구함어느 방법이든, **최대공약수(GCD)**를 알고 있다면 아래 공식으로 ..

SQL : 문자열 관련 함수

🧵 1. 문자열 길이 관련 함수함수명설명예시LENGTH(str)문자열의 바이트 수 반환LENGTH('abc') → 3, LENGTH('가') → 3CHAR_LENGTH(str)문자열의 문자 수 반환CHAR_LENGTH('가') → 1 ✂️ 2. 문자열 추출함수명설명예시LEFT(str, n)왼쪽부터 n글자 추출LEFT('banana', 3) → 'ban'RIGHT(str, n)오른쪽부터 n글자 추출RIGHT('banana', 3) → 'ana'SUBSTRING(str, start, length)특정 위치부터 일정 길이 추출SUBSTRING('banana', 2, 3) → 'ana'SUBSTRING_INDEX(str, delim, n)구분자 기준 n번째까지 추출SUBSTRING_INDEX('a@b@c', ..

코딩/SQL 2025.04.11

SQL : 날짜(DATE) 관련 함수

함수 이름설명NOW()현재 날짜와 시간 (예: 2025-04-11 15:30:00)CURDATE()현재 날짜만 (예: 2025-04-11)CURTIME()현재 시간만 (예: 15:30:00)SYSDATE()NOW()와 비슷하지만 약간 다른 동작 방식DATE()날짜/시간에서 날짜 부분만 추출TIME()날짜/시간에서 시간 부분만 추출YEAR(date)연도 추출MONTH(date)월 추출DAY(date)일(날짜) 추출HOUR(date)시 추출MINUTE(date)분 추출SECOND(date)초 추출DATE_ADD(date, INTERVAL n unit)날짜에 시간 더하기DATE_SUB(date, INTERVAL n unit)날짜에서 시간 빼기DATEDIFF(date1, date2)두 날짜 사이 일 수 차이 (..

코딩/SQL 2025.04.11

Paging 공부중

필터를 쓰기 위해서는1 FilterRestrationBean 등록 필요2 doFilter 오버라이드  페이징 구현하기1. 현재 몇 페이지(page)인가?2. 한 페이지당 몇개의 게시글(size)을 보여주는가?Page page = PageRequest.of(page, size)Page se = ScheduleRepository.findAll(page); 이런식으로 쓴다고 하는데, 나는 페이지라는게 뭔지 궁금하다-_- ✅ 1. Page란? • Page는 Spring Data JPA에서 제공하는 페이징 결과 타입 • 단순히 리스트만 담고 있는 게 아니라, 페이지 번호, 전체 페이지 수, 총 데이터 개수, 현재 페이지의 데이터 목록 등도 같이 담겨 있음.{ "content": [ {일정1}, {일정2}, ....

코딩/sparta TIL 2025.04.09