분류 전체보기 212

JPA란 무엇인가?

기존의 데이터베이스 문제점 1. Jdbc나 MyBatis,SQL Mapper는 SQL을 개발자가 직접 작성해야 한다.  2. 객체 - 관계의 불일치  데이터 저장 방식의 차이객체는 필드(속성) + 메서드(행위) 를 가지지만, 관계형 데이터베이스는 테이블(행, 열) 구조를 가짐.연관관계 표현의 차이객체는 참조(Reference) 를 통해 관계를 표현하지만, RDBMS는 외래키(Foreign Key) 를 사용하여 관계를 표현.이를 수동으로 처리하면 조인(Join)과 SQL 작성이 복잡해짐.상속 구조의 차이Java는 클래스 상속(Inheritance) 을 지원하지만, 관계형 데이터베이스는 직접적인 상속 개념이 없음.상속을 표현하기 위해 JOIN 테이블을 사용하거나 단일 테이블 전략 등을 적용해야 함. 이러한 ..

카테고리 없음 2025.02.10

프로그래머스 - 네트워크[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr dfs를 이용해서 쉽게 해결할 수 있는 문제이다. 예시n computers 3 [[1, 1, 0], [1, 1, 0], [0, 0, 1]]   우선 방문했던 컴퓨터를 또 방문하면 안되므로 visit배열을 통해 각 컴퓨터의 방문 여부를 저장해준다.public static boolean[] visit;  이제 dfs 코드가 필요하다. start 변수 ==> 현재 컴퓨터의 위치n ==> 전체 컴퓨터 갯수 public static void dfs(in..

MyBatis

MyBatis는 Java에서 SQL을 보다 쉽게 다룰 수 있도록 도와주는 ORM 프레임워크이다. MyBatis는 기존의 JDBC보다 간편하게 데이터베이스와 연동할 수 있도록 SQL 매핑을 지원하며, XML 또는 애노테이션을 사용해 SQL을 작성할 수 있다. MyBatis의 장단점 장점동적 쿼리를 편리하게 작성할 수 있다.커넥션,트랜잭션과 관련된 기능을 MyBatis 스프링 연동 모듈이 자동으로 설정해준다.단점설정이 다소 복잡할 수 있다. MyBatis 사용  1. ItemMapper 생성 ItemMapper는 마이바티스 매핑 XML을 호출해주는 매퍼 인터페이스이다. SQL을 XML로 작성하면 @Mapper가 있는 인터페이스에 SQL을 자동으로 매핑시켜준다.package hello.itemservice.r..

BackEnd/Database 2025.02.08

H2 데이터베이스 포트 충돌 문제 해결 방법

h2 데이터베이스를 사용할때 Host not found가 뜨면서 실행이 안될때가 있다. 이유는 포트를 이미 사용중이기 때문이다. 따라서 사용중인 포트를 강제로 종료해주면 데이터베이스가 정상적으로 수행된다. 1. 해당 포트를 사용중인 프로세스 찾기netstat -ano | findstr :8082  2. 포트를 사용중인 프로세스 강제 종료taskkill /F /PID 프로세스아이디   3. H2 콘솔 이용해서 데이터베이스 접속

에러 일기 2025.02.08

프로그래머스 - 등굣길[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  이 문제에서 중요한건 최단 거리가 되기위한 조건이다.  목적지가 최하단의 가장 우측에 있으므로 최단 거리로 이동하기 위해서는 오른쪽으로 가거나, 아래로 가야한다. 만약 경로중 위로가거나 왼쪽으로 간다면 그것은 최단 경로에 포함이 안된다. 따라서  dp배열에 오른쪽으로 가거나 왼쪽으로 가는 경우를 저장하여 최종 목적지까지 가는 경우의 수를 더해줬다. 물 웅덩이는 dp 배열에 -1로 저장하여 방문을 막았다. import java.util.*;cl..

알고리즘/DP 2025.02.07

DB Test[@Transactional, 임베디드 모드 DB]

테스트에서의 @Transactional 테스트를 할때 테스트 후 데이터가 다시 삭제 되어야 할때가 있다. 이럴때 사용할 수 있는게 @Transactional 이다. 원래 @Transactional은 로직이 정상 수행되면 커밋되어 데이터베이스에 변경사항을 저장하지만, 테스트에서 사용될 경우 모든 로직이 트랜잭션 안에서 수행되고 테스트가 끝나면 롤백을 수행하여 테스트에서 생성되거나 변경된 데이터를 롤백시킨다.  package hello.itemservice.domain;import java.util.List;import static org.assertj.core.api.Assertions.assertThat;@Transactional@SpringBootTestclass ItemRepositoryTest { ..

BackEnd/Database 2025.02.07

JdbcTemplate

실무에서 가장 간단하고 실용적인 방법으로 SQL을 사용하려면 JdbcTemplate를 사용하면 된다.  기본 사용법 단건 조회(queryForObject)int rowCount = jdbcTemplate.queryForObject("select count(*) from t_actor", Integer.class); 단건 조회 - 숫자 조회, 파라미터 바인딩 int countOfActorsNamedJoe = jdbcTemplate.queryForObject( "select count(*) from t_actor where first_name = ?", Integer.class, "Joe"); 단건 조회 - 문자 조회 String lastName = jdbcTemplate.queryForObject( "se..

BackEnd/Database 2025.02.07

프로그래머스 - 정수 삼각형

https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   처음에는 dfs를 이용해서 문제를 해결했지만, 답은 맞게 나오나 시간초과가 발생하였다. 때문에 중복 계산을 방지하기 위해 메모이제이션 기법을 사용해야 한다. 메모이제이션 : 동일한 계산을 반복해야 할 경우 한 번 계산한 결과를 메모리에 저장해 두었다가 꺼내 씀으로써 중복 계산을 방지 import java.util.*;class Solution { int[][] dp; int answer = 0; public int solu..

알고리즘/DP 2025.02.05

프로그래머스 - 섬 연결하기(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 크루스칼 알고리즘을 알면 바로 풀 수 있는 문제이다.https://developerwoohyeon.tistory.com/192 신장트리(Spanning Tree), 최소신장 트리(Minimum Spanning Tree)신장트리 신장 트리란 그래프 상에서 모든 노드가 사이클 없이 연결된 부분 그래프를 뜻한다. 하나의 그래프에는 신장 트리가 많이 존재할 수 있다. 단, 그래프의 모든 정점을 포함 해야한다.developerwoohyeon.tistor..

신장트리(Spanning Tree), 최소신장 트리(Minimum Spanning Tree)

신장트리 신장 트리란 그래프 상에서 모든 노드가 사이클 없이 연결된 부분 그래프를 뜻한다. 하나의 그래프에는 신장 트리가 많이 존재할 수 있다. 단, 그래프의 모든 정점을 포함 해야한다.  최소 신장 트리 최소신장트리는 신장 트리중 간선의 가중치 합이 가장 작은 트리를 말한다. 알고리즘 문제에서 유용하게 사용될 수 있다.ex)섬 연결하기 (프로그래머스)전력망을 둘로 나누기 (프로그래머스)별자리 만들기 (백준 4386)네트워크 연결 (백준 1922)도시 분할 계획 (백준 1647) 최소 신장 트리 구현 최소 신장 트리 구현의 대표적인 알고리즘은 크루스칼 알고리즘이다. 크루스칼 알고리즘 과정 1) 간선은 가중치를 기준으로 오름차순 정렬한다.  2) 간선을 하나씩 살핀다. 간선을 MST에 추가했을 때 MST에..