자바
-
[JPA] test 시 @RequiredArgsConstructor 사용 불가자바/JPA 2024. 1. 21. 22:25
| 문제점 평소 lombok의 Annotation인 @RequiredArgsConstructor를 통해 @Autowired로 의존성을 주입하지 않고 private final로 생성자 의존성 주입을 해왔습니다. 이는 Spring 컨테이너를 통해 의존성을 주입시켜주는 방식으로 사용이 가능했으나, Spring에서 Test를 진행할 경우에는 Spring 컨테이너를 사용하지 않고 JUnit 프레임워크를 사용해 lombok이 동작하지 않습니다. @SpringBootTest @RequiredArgsConstructor class VideoTest { private final VideoRepository videoRepository; private final VideoPostService videoPostService..
-
[JPA] jakarta.persistence @Annotation 정리자바/JPA 2024. 1. 18. 15:29
JPA의 영속성 관련해 자주 사용하는 @Annotaion을 한 자리에 정리해 보았습니다. @Entity: 해당 객체를 JPA에서 엔티티로 인식 할 수 있도록 해주는 Annotaion @Id: 엔티티의 PK 임을 나타내며 Id로 설정된 객체 이름을 snake_case로 변환해 DB의 테이블과 맵핑해줍니다. @GeneratedValue: Id로 설정된 식별자 값을 자동으로 증가시켜 주며, 아래와 같은 네 가지 타입이 존재합니다. GeneratedValue(strategy = GenerationType.IDENTITY) PK 값 생성을 DB에 맡깁니다. MySQL, MSSQL 등에 주로 사용됩니다. GeneratedValue(strategy = GenerationType.SEQUENCE) DB에서 테이블의 행..
-
[1939] 중량제한 - Java[자바]자바/백준 2024. 1. 16. 22:28
| 문제 링크 https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net | 문제 N개의 섬(노드)와 M개의 다리(간선)의 정보가 주어집니다. N(2 ≤ N ≤ 10,000) , M(1 ≤ M ≤ 100,000) 두 개의 공장은 서로 다른 섬에 있으며, 공장까지 갈 수 있는 다리는 반드시 존재합니다. M개의 간선의 정보에는 A, B, C 세 가지 값이 주어지며, A와 B는 섬번호, C는 두 섬 사..
-
[JPA] Lombok 이란?자바/JPA 2024. 1. 6. 20:59
| Lombok Java 라이브러리로 Lombok의 Annotation을 사용해 자주 사용하는 메서드 및 Annotation을 자동으로 등록해주거나, 자료에 대한 검증을 해주어 가독성과 편의성을 높여줍니다. 멤버 변수 별 getter, setter 등을 자동으로 생성해 깨끗한 화면과 메서드를 반복 생성하는 비용을 줄여줍니다. | 주요 Annotation @Getter : 멤버 변수들의 getter 메서드 자동 생성 @Setter : 멤버 변수들의 setter 메서드 자동 생성 @ToString : 멤버 변수 print 출력 시, 주소 값이 아닌 String 문자열을 출력해 주는 메서드 자동 생성 @EqualsAndHashCode : Equals(동등성)와 hashCode(동일성) 두 가지 연산자를 모두 ..
-
[JPA] Persistence(영속성) 정리자바/JPA 2024. 1. 2. 17:45
| Persistence(영속성)란? 이전 글에서 JPA는 프레임워크이며 인터페이스라고 설명드린 내용이 기억나실까요? 이러한 JPA를 구현체(본 블로그에서는 Hibernate를 사용)를 통해 구현하며, 구현하는 객체 중 하나가 Persistence입니다. Persistence는 데이터를 영속성 상태인 데이터와 그렇지 않은 상태로 구분하며, 영속성 상태인 데이터는 별도 관리해 빠른 조회 및 변화를 감지해 데이터 베이스에 업데이트를 진행할 수 있게 해줍니다. 즉, 데이터 베이스와 연결시켜주는 JPA 객체라고 이해하시면 되겠습니다. 영속성 상태에 대해서는 다른 용어들의 설명 이후에 말씀드리도록 하겠습니다. | Persistence 설정 Persistence를 사용하기 전에 어느 데이터 베이스와 연결할지, 사용..
-
[20010] 악덕 영주 혜유 - Java[자바]자바/백준 2023. 12. 31. 23:58
| 문제 링크 https://www.acmicpc.net/problem/20010 20010번: 악덕 영주 혜유 FT온라인 게임에서 치열한 경쟁을 통해 영주가 된 혜유는 퀘스트를 받았다. 퀘스트의 내용은 자신이 관리하고 있는 마을 사이에 교역로를 건설하여 마을 간 교류를 활성화시키는 것이다. 이때, www.acmicpc.net | 문제 첫 줄에 마을의 수 N(1 ≤ N ≤ 1,000)과 설치 가능한 교역로의 수 K(1 ≤ K ≤ 1,000,000)가 주어집니다. 두 번째 줄부터 K+1줄에는 서로 다른 두 마을의 번호 a, b (a ≠ b)와 두 마을을 연결하는 비용 c(1 ≤ c ≤ 1,000,000) 가 주어집니다. 마을은 0번 부터 시작하며, 첫 번째 줄에 마을을 모두 연결하는 최소 비용을, 두 번째..
-
[JPA] JPA란?자바/JPA 2023. 12. 18. 21:41
| JPA란? JPA는 Java Persistence API의 약자로 Java에서 객체를 영구적으로 관리(DB에 관리)하는 것을 의미하며, Java ORM(Object Relational Mapping)을 통해 Java와 관계형 DB를 연결하는 프레임워크입니다. 비슷한 역할을 하는 프레임워크로 Mybatis가 있습니다. | JPA를 사용하는 이유 부제로는 국내 점유율이 높은 Mybatis 대신 JPA를 쓰는 이유가 적절할 것 같습니다. 우선 국외 시장을 기준으로 보았을 때 Mybatis보다 JPA가 앞도적인 점유율을 가지고 있습니다. 또한 Java에서 공식적으로 안내하는 ORM API가 JPA다. 마지막으로 INSERT, SELECT, UPDATE 등 대부분의 쿼리가 SQL별로 맞추어 Mapper를 작성..
-
[1368] 물대기 - Java[자바]자바/백준 2023. 12. 9. 21:21
| 문제 링크 https://www.acmicpc.net/problem/1368 1368번: 물대기 첫 줄에는 논의 수 N(1 ≤ N ≤ 300)이 주어진다. 다음 N개의 줄에는 i번째 논에 우물을 팔 때 드는 비용 Wi(1 ≤ Wi ≤ 100,000)가 순서대로 들어온다. 다음 N개의 줄에 대해서는 각 줄에 N개의 수가 들어 www.acmicpc.net | 문제 첫 줄의 논의 수 N이 주어집니다. N(1 ≤ N ≤ 300) 두 번째 줄부터 N개의 줄에 N번 째 논에 우물을 파는 비용 Wi가 주어집니다. (1 ≤ Wi ≤ 100,000) 다음 N개의 줄에 각 줄마다 N개의 수가 들어오는데 i번째 논과 j번째 논을 연결하는데 드는 비용이 주어닙니다. Pi,j(1 ≤ Pi,j ≤ 100,000, Pi,j =..