본문 바로가기

Development

(98)
[Spring] DAO (Data Access Object), DTO (Data Transfer Object) DAO(Data Access Object) 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체 비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행함 단, Spring Data JPA에서 DAO의 개념은 Repository(레포지토리)가 대체 규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 데이터베이스에 접근해서 구현하기도 함 하지만 DAO를 서비스 레이어와 리포지토리 중간 계층을 구성하여 사용하면, 비즈니스 로직을 개발할 때 유지보수 측면에서 용이한 경우가 많음 서비스와 비즈니스 레이어 객체지향적인 설계에서는 서비스와 비즈니스 레이어를 분리해서 서비스 레이어에서는 서비스 로직을, 비즈니스 레이어에서는 비즈니스 로직을 수행해야 한다는 의견이 많다. ..
[Spring] Spring Data JPA, Repository Spring Data JPA Spring Data JPA는 JpaRepository를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공 Springboot로 JpaRepository를 상속하는 인터페이스를 생성하면, 기존의 다양한 메소드를 손쉽게 활용할 수 있음 Repository Spring Data JPA가 제공하는 인터페이스 엔티티가 데이터베이스의 테이블과 구조를 생성하는 데 사용했다면, 리포지토리(Repository)는 엔티티가 생성한 데이터베이스에 접근하는 용도로 사용 리포지토리를 생성하려면 테이블과 엔티티에 대한 인터페이스를 생성하고, 아래 코드와 같이 JpaRepository를 상속받으면 됨 package org.spring.study.data.repository; impor..
유튜브 영상과 논문을 요약해주는 AI, Lilys AI (블로그 글도 써줌 ㄷㄷ;) Lilys AI https://lilys.ai/home 유용한 AI 사이트를 발견해서 작성합니다. Lilys AI인데, 유튜브 영상, PDF를 분석하여 요악 노트를 작성해주거나, 블로그로 작성해주는 기능도 수행합니다. 저는 아래 '쉬운코딩' 채널의 동영상 하나를 넣어보겠습니다. https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=1 아래와 같이 요약을 해주는데요 ! 동영상의 소리를 분석하여 타임스탬프 별 요악 노트, 스크립트, 블로그 글, 심지어 동영상 내용의 관한 대화까지 가능합니다. 어 잠깐 영상 캡처는 저작권의 이슈가 있지 않나..? https://www.a-ha.io/questions/47..
[String] [한양대 HCPC 2023] X marks the Spot Java 풀이 ( + 시간 초과 해결) https://softeer.ai/practice/7703 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이법 'X' 또는 'x'의 위치는 유일하므로 for 문 순회하면서 문자를 찾음(charAt() 사용), 찾으면 break Character.toUpperCase()를 사용하여 소문자를 대문자 변경 시간 초과 해결 처음엔 answer 라는 스트링에 + 연산으로 문자들 하나씩 이어 붙이고, System.out.println()으로 출력을 했는데 3초 이상의 시간이 걸리길래.. BufferedWriter를 사용했더니 0.xxx 초 대로 빨라졌다. 코드 import java.io.*; import java.util.*; public class Main { public stati..
[Array] Softeer(소프티어) level 3 우물 안 개구리 Java 풀이 https://softeer.ai/practice/6289 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이법 무게들을 저장하는 int 배열과, 사람 수 크기의 boolean 배열 생성(그리고 모두 true로 초기화) A > B면 boolean 배열에 B 인덱스를 false A == B면 boolean 배열에 A, B 인덱스를 false A < B면 boolean 배열에 A 인덱스를 false 즉, 한 번이라도 친구들끼리 무게에서 지거나 비겼으면 false로 바꿈 마지막으로 boolean 배열에 true의 개수를 리턴 코드 import java.io.*; import java.util.*; public class Main { public static void main(Str..
[Greedy] Softeer(소프티어) level 2 진정한 효도 Java 풀이 https://softeer.ai/practice/7374 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제풀이법 한 줄의 땅 높이들을 저장하는 ArrayList 생성 땅의 모든 높이 값들을 배열에 저장하면서, 동시에 가로열의 높이를 비교 비교 방법은 오름차순 정렬 후 가장 큰 값이 가장 작은 값(첫 번째 인덱스)과 같으면 0을 출력 아니면 가장 큰 값에서 첫 번째 인덱스와의 차이, 그리고 가장 큰 값과 두 번째 인덱스와의 차이 값이 땅을 고르게 만드는 비용이 됨 이전에 필요한 비용과 비교 후 더 작은 값으로 대체, ArrayList 초기화 가로열 비교 후 세로열도 순회하면서 비교 코드 import java.io.*; import java.util.*; public class M..
[Spring] 영속성 컨텍스트 (Persistence Context) 영속성 컨텍스트(Persistence Context) 영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행 엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 데이터베이스에 반영하는 작업을 수행함 이처럼 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되는 시점부터는 해당 객체를 영속 객체(Persistence Object)라고 부름 영속성 컨텍스트는 세션 단위의 생명주기를 가짐 데이터베이스에 접근하기 위한 세션이 생성되면 영속성 컨텍스트가 만들어지고, 세션이 종료되면 영속성 컨텍스트도 없어짐 엔티티 매니저는 이러한 일련의 과정에서 영속성 컨텍스트에 접근하기 위한 수단으로 사용됨 엔티티 매니저(En..
[Spring] Springboot Swagger 3 적용하기 (Springdoc-OpenAPI3) Springdoc-OpenAPI3 springdoc-openapi 자바 라이브러리는 스프링 부트 프로젝트를 사용하여 API 문서화를 자동화하는 데 도움을 줍니다. springdoc-openapi는 런타임에서 애플리케이션을 검사하여 스프링 구성, 클래스 구조 및 여러 주석을 기반으로 API 의미를 추론하는 방식으로 작동합니다. springdoc-openAPI 라이브러리는 다음 기능을 제공합니다. OpenAPI 3 Spring-boot v3 (Java 17 & Jakarta EE 9) JSR-303, specifically for @NotNull, @Min, @Max, and @Size. Swagger-ui OAuth 2 GraalVM native images Swagger-UI Swagger UI는 API..