개발
-
[JPA] Persistence Context개발/Java 2023. 1. 14. 00:47
EntityManager 엔티티 매니저 팩토리는 매 요청마다 엔티티 매니저를 생성한다. 엔티티 매니저는 내부적으로 DB 커넥션을 만들어 DB를 이용한다. 영속성 컨텍스트 영속성 컨텍스트는 논리적인 개념이다. 엔티티를 영구적으로 저장하고 객체로 이용할 수 있게 하는 환경. 이를 이용해서 엔티티를 영속성 컨텍스트에 영속적으로 저장한다. J2SE 환경에서 각 엔티티 매니저는 개별적인 영속성 컨텍스트를 가진다. J2EE, 스프링과 같은 컨테이너 환경에서는 여러 엔티티 매니저가 하나의 영속성 컨텍스트를 가진다. 엔티티의 생명주기 비영속 - new , transient 영속성 컨텍스트와 전혀 관계 없는 새로운 상태 최초 객체를 생성한 상태 값을 set() 하였지만 영속성 컨텍스트에 아직 저장하지 않음. 영속 - m..
-
[JPA] JPA개발/Java 2023. 1. 1. 16:47
JPA는 Java Persistence API의 약자로 Java의 ORM 표준이다. 기존의 JDBC와 Java 앱 사이에서 사용되는 API다. 기존의 RDB, SQL과 객체지향적 코드 사이에는 문제점이 있다. RDB 같은 경우 SQL을 통해 DB에 접근하여 데이터를 관리할 수 있다. 하지만 객체지향적 언어에서 사용되는 상속 관계 등을 명확하게 표현할 수 없다. 또, 참조되는 객체 사이에서는 그 이동이 자유로워야 한다. 하지만 RDB를 통해 가져온 데이터에서는 매번 Join을 통해 새롭게 데이터를 추가해야한다. 이런 상황에서 여러 상황에서 쓰이는 쿼리를 매번 작성하는 것이 번거롭기에 JPA가 등장했다. JPA는 지연 로딩, 즉시 로딩을 지원하며 상황에 따라 필요한 객체를 필요 시점에 맞게 불러올 수 있다...
-
[백준] Java - 줄 세우기개발/알고리즘 2022. 6. 1. 23:52
2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 백준의 위상정렬 문제 줄 세우기의 자바 풀이다. 위와 같이 순서가 정해져 있고 사이클이 없는 그래프를 정렬하는 알고리즘이 위상정렬이다. "진입 차수"와 "인접 리스트"를 통해서 문제를 해결할 수 있었다. 위의 그림에서 6을 보면 4와 5로부터 진입하는 것을 볼 수 있다. 2개의 노드가 6으로 진입하므로 진입 차수는 2이다. 반대로 1이나 2는 진입차수가 0이다. 인접리스트를 통해 연결된 다음 노드를 저장하고 진입차수가 ..
-
[SpringBoot] URL 이미지 반환하기(2) - Redis Caching개발/Java 2022. 5. 16. 15:55
[SpringBoot] URL 이미지 반환하기 스프링부트를 활용해서 API 서버를 만들면서 이미지가 담긴 URL을 반환해주는 기능이 필요했다. 클라이언트가 서버의 URL로 접근해서 이미지를 요청하면 외부 API의 정적 이미지를 담은 URL을 내 쪽 www.floodnut.com 앞서 구현한 URL 이미지를 캐싱하는 작업을 진행하고자 한다. 우선 캐싱을 진행하고자 한 이유는... 이미지는 외부 API를 통해 요청된다. API 호출 횟수를 줄이기 위해서다. 반복 요청에 대해서 외부 API로의 이미지 요청의 응답 속도를 줄이기 위해서다. 그렇다면 NoSQL인 Redis를 선택한 이유는? Key-Value를 통해 원하는 이미지만 빠르게 반환하기 위해서다. 여러 이미지를 반환한다면 RDBMS가 더 유리할 수도 있..
-
[프로그래머스] Python - 거리두기 확인하기개발/알고리즘 2022. 5. 10. 20:10
코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 프로그래머스 레벨2 문제로 카카오 인턴십 코딩테스트 출제 문제다. 주어진 리스트에서 사람들이 거리두기를 지키는지 확인하면 된다. 이 문제의 경우 BFS-FloodFill로 해결할 수 있었다. ..