Server

    [Spring/프로젝트] 카드뉴스 생성하기 Python Pillow + Open AI API

    교내 탄소중립 SW 아카데미 4기에서 탄소중립 뉴스 데이터를 시각적으로 보여주기 위해 카드뉴스 형식의 콘텐츠를 자동 생성하는 프로젝트를 진행중이다. 이 과정에서 OpenAI의 GPT 및 이미지 생성 API, 그리고 Python의 Pillow 라이브러리를 결합하여 글자 삽입이 가능한 카드뉴스를 완성하였다. 카드뉴스 자동화 개발까지 시행착오를 포스팅하고자 한다.Open AI API 활용OpenAI API 만으로 카드뉴스 만들기패키지 구조cardNews-spring└─ src └─ main ├─ java │ └─ com.swacademy.demo │ ├─ controller │ │ └─ NewsController.java │ ├─ dt..

    [Spring/공부] Spring JPA 고급 활용 (JPQL, Query DSL)

    1. 영속성 컨텍스트(Persistence Context)란?영속성 컨텍스트는 엔티티 객체를 영구적으로 저장하고 관리하는 메모리 공간이다.일종의 1차 캐시처럼 동작하며, JPA는 이를 통해 DB에 직접 접근하지 않고 객체를 효율적으로 관리한다.주요 기능1차 캐시변경 감지(Dirty Checking)지연 로딩(Lazy Loading)예제: 변경 감지Member member = em.find(Member.class, 1L);member.setName("변경된 이름");em.getTransaction().commit(); // UPDATE 쿼리 자동 실행2. FetchType.EAGER vs LAZY즉시 로딩 (EAGER)연관된 모든 엔티티를 즉시 조인(fetch join)으로 가져온다.N+1 문제가 발생할 ..

    [Spring/공부] Spring JPA와 프로젝트 구조

    JPA객체 지향 언어와 관계형 DB자바는 객체지향 언어이다. 하지만, 데이터를 관리할 때는 관계형 DB를 많이 사용한다.이 때 객체지향 언어와 RDB 패러다임의 불일치가 발생한다.객체지향적 언어 : 캡슐화/상속/다형성 활용하는 것이 목표RDBMS (관계형 DB) : 데이터를 정교하게 구선하는 것이 목표→ 따라서 CRUD 쿼리를 다 짜고, Java를 SQL로 바꾸고, SQL을 Java로 바꿔야 하는. 즉 하나의 테이블을 만들거나 변경할 때마다 수십개의 쿼리를 짜야하는 문제 발생.이러한 문제를 해결하기 위해서 JPA 기술이 나오게 되었다.JPA란?Java Persistence API : 자바 진영에서 Object-Relational Mapping 기술의 표준으로 사용되는 인터페이스의 모음이다.ORM 기술이란..

    [서버/공부] 데이터베이스 설계 및 정규화 이론

    외래 키란(Foreign Key = FK)다른 테이블의 기본 키(PK) 를 참조하는 키이다.특징*테이블 간의 연관 관계를 표현하는데 사용된다.참조 무결성을 유지해야 한다.*참조 무결성 : 외래 키가 참조하는 기본 키가 반드시 존재해야 한다는 제약 조건CASCADE, SET NULL, RESTRICT, NO ACTION 등의 방식으로 부모데이터 삭제시 자식 데이터 동작 방식을 제어할 수 있다.한 테이블 내에 여러개의 외래키를 가질 수 있다.기본 키란 (Primary Key = PK)테이블에서 각 행을 유일하게 식별할 수 있는 컬럼 또는 컬럼의 조합이다.특징*각 행을 고유하게 구분하는 값으로 중복될 수 없고, NULL일 수 없다.한 테이블에는 하나의 기본키만 존재해야 한다.두 개 이상의 컬럼을 조합해서 복합..

    [Spring/공부] Spring Boot 코어 개념 정리

    DI(Dependency Injection) : 의존성 주입정의객체가 필요한 의존 객체를 직접 생성하지 않고, 외부에서 주입받는 방식을 의미한다.이는 객체간 결합도를 낮추고, 유연하고 테스트하기 좋은 구조를 만들 수 있다.종류생성자 주입setter 주입필드 주입Spring에서 DI@Autowired , @Component , @RequiredArgsConstructor 등으로 DI수행 가능하다.스프링이 Bean을 관리하면서 필요한 객체를 자동으로 넣어준다.IoC(Inversion of Control) : 제어의 역전애플리케이션의 제어 흐름을 개발자가 아닌 외부(컨테이너)가 관리하는 구조를 의미한다.객체의 생성, 생명주기, 의존성 관리 등을 프레임워크(여기서는 Spring)가 담당한다.즉 개발자가 객체를 ..