전체 글 98

JPA(Java Persistence API)의 이해 2

JPA의 Entity Manager영속성 컨텍스트(Persistence Context)를 두어 Entity를 관리하는 주체@PersistenceContext 어노테이션을 통해 주입하거나 생성자 주입을 했을 시 자동적으로 주입 됨import org.springframework.stereotype.Serviceimport jakarta.persistence.EntityManagerimport jakarta.persistence.PersistenceContext@Serviceclass MyService { @PersistenceContext private lateinit var entityManager: EntityManager}EntityManager는 여러 종류의 함수를 지원하여, Entity의..

JPA(Java Persistence API)의 이해 1

JPA(Java Persistence API)ORM의 한 종류, Java 및 Kotlin의 객체를 사용해 DB를 쉽게 조회, 조작할 수 있도록 해 줌 ORM(Object-Relational Mapping)객체와 관계형 DB 간의 매핑을 담당별도의 SQL 쿼리를 작성하지 않아도 객체를 DB에 저장 및 조회 가능객체를 활용하므로 객체 지향 프로그램 가능 및 재사용성 증대DB에 종속적이지 않음(DB 변경 시 코드 최소화)필요에 따라 데이터를 캐싱하므로 효율적인 데이터 조회 가능 ORM 개념 학습 러닝 커브 有복잡한 쿼리나 특수한 DB 기능을 사용하는 경우 직접 SQL 작성이 효율적JDBC, Hibernate, JPA, Spring Data JPAJDBC(Java Database Connectivity)Java..

Programmers SQL 문제 풀이 61 ~ 70

서울에 위치한 식당 목록 출력하기https://school.programmers.co.kr/learn/courses/30/lessons/131118-- 1. 서울에 위치한 식당-- 2. 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수 조회-- 3. 평균 점수는 소수점 세 번째 자리에서 반올림-- 4. 평균 점수 기준 내림차순, 즐겨찾기수 기준 내림차순 정렬-- ------------------------------------------------------------------ 1. rest_review 테이블에서 식당 ID, 점수를 추출한다.-- 2. rest_info와 rest_review에서 추출한 데이터를 조인한다.-- 3. address에서 '서울'과 일치하는 주소만 필..

SQL/SQL문제풀이 2024.05.09

TIL - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

처음 작성한 틀린 쿼리SELECT month(start_date), car_id, count(car_id) AS recordsFROM car_rental_company_rental_historyWHERE car_id IN ( SELECT car_id FROM car_rental_company_rental_history WHERE start_date BETWEEN '2022-08-01' AND '2022-10-31' GROUP BY 1 HAVING count(car_id) > 4) GROUP BY 1, 2ORDER BY 1, 2 DESC 서브 쿼리의 where절에 조건에 맞게 대여 시작일(start_date)이 2022년 8월 ~ 2022년 10월의 자동차 ID만을 필터링했고 그..

[PostgreSQL] Supabase 설정

SupabaseRDBMS 중 하나인 PostgreSQL을 Cloud 형태로 사용가능하게 해주는 서비스데이터베이스를 다룰 수 있는 UI를 제공하는 이점이 있음별도의 API를 제공하여 javascript를 통해서도 데이터베이스에 쉽게 접근할 수 있음초기 500MB의 데이터까지는 무료로 제공 (이후에도 저렴)webhook과 같은 별도의 extension 기능들 또한 존재초기 제품의 프로토타이핑 용도로 최근에 많이 사용Supabase 설정https://supabase.com/에서 회원가입 후 로그인Dashboard → New organization → Name / Type of organization / Pricing Plan 설정 → Create organization 클릭 → Name / Database p..

Tip 2024.05.07

Git & GitHub - 브랜치를 활용하여 협업하기

브랜치(복사본) 생성 명령어git branch 브랜치명 브랜치 확인 명령어git branch내가 위치해 있는 브랜치는 * 브랜치명으로 표시됨빠져나가기 → q브랜치 이동 명령어git switch 브랜치명git checkout 브랜치명git switch 브랜치명 : 새로 생김(브랜치 이동하는 기능만 하도록 만듦) - 권장git checkout 브랜치명 : 옛날엔 이거 뿐이었음, 과거 코드로 돌아가는 기능도 있음Switched to new branch ‘브랜치명’ : ‘브랜치명’으로 이동 됐음을 알려줌브랜치 한 번에 생성 및 이동git switch -c 브랜치명git checkout -b 브랜치명c: createb: branch새로운 브랜치 생성 후새로운 브랜치에서 코드 수정(여기에서 수정을 해도 main은 ..

Tip 2024.05.03

Baekjoon 구간 합 구하기 4 문제를 풀면서 삽질하기

문제 링크 : https://www.acmicpc.net/problem/11659 처음 작성한 코드는 다음과 같고 결과는 시간 초과다.fun main() { val countInput = readln().split(" ").last().toInt() val array = readln().split(" ").map { it.toInt() }.toIntArray() val sumArray = intArrayOf(0, *array) for (i in 1..array.size) { sumArray[i] = sumArray[i - 1] + sumArray[i] } for (i in 1..countInput) { val input = readln().spli..

숫자 야구 게임을 구현하면서 다시 객체 지옥에 빠지다.

Kotlin으로 숫자 야구 게임을 구현했다.https://github.com/hellou8363/week3 첫 시작은 각자의 역할을 하는 객체를 만들기 위한 많은 클래스로 시작했다.난수를 생성하는 클래스힌트를 갖고 있는 enum 클래스게임 이력을 저장하는 클래스사용자에게 출력되는 내용들을 담은 클래스입력값 검증을 위한 클래스사용자의 입력값과 정답을 비교하는 클래스클래스를 많이 생성하게 된 첫 번째 이유는 이다.숫자 야구 게임 안에서 협력하는 등장인물들을 보자면 내 주관으로는 위와 같이 나누어지기 때문에 클래스가 많아질 수밖에 없었고 다시 클래스 지옥에 빠질 수밖에 없었다. 두 번째 이유는 클래스는 설계도이고 인스턴스(객체)는 제품이라는 것이다.클래스가 설계도라면 난수를 생성하는 기계를 만들기 위해 당연히..

계산기 프로젝트 코드 수정 및 예외 처리

단순하게 시작했던 계산기 프로젝트에 문제점들이 생기면서 코드를 수정하고 예외가 발생하는 부분들을 찾아 예외 처리를 하면서 생각보다 시간을 많이 쓰게 되었다. 다음은 변경된 사항이다.모든 것은 객체라고 생각해서 만들었던 단순 안내 문구들을 담았던 클래스를 삭제계산할 값들을 저장하는 클래스에서 입력값에 대한 검증을 하는 부분을 제거검증만을 담당하는 클래스를 생성검증 후 바로 계산을 시작하면 저장을 할 필요가 없으므로 저장을 담당하는 클래스 삭제모든 값을 받아서 계산하는 방식에서 두 개의 값만 받아서 계산하는 방식으로 변경계산 방식 변경으로 인한 main 함수에 반복문(while) 추가 - 모든 값의 계산이 끝날 때까지 반예외 처리 추가0으로 나누는 경우 - 이 부분은 식을 검증하는 과정에서 처리할 수 없었고..