✅ 1. 전체 구성 요약

항목 기술
DB MySQL
ORM Spring Data JPA
빌드 도구 Gradle 또는 Maven
핵심 구성요소 application.properties, @Entity, @Repository, @Service, @Controller

✅ 2. Gradle 의존성 예시 (build.gradle)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java:8.0.33'
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

Maven 사용하는 경우 알려주면 pom.xml로도 드릴 수 있어요.


✅ 3. application.properties 설정

spring.application.name=gallery

spring.datasource.url=jdbc:mysql://localhost:3306/gallery?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA 설정
spring.jpa.hibernate.ddl-auto=update  # create, update, validate 등 가능
spring.jpa.show-sql=true              # 콘솔에 SQL 출력
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

✅ 4. Entity 클래스 생성

package com.example.gallery.domain;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "users")
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String email;
}

✅ 5. Repository 생성

package com.example.gallery.repository;

import com.example.gallery.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // 기본 CRUD는 자동 제공
    User findByUsername(String username); // 사용자 정의 쿼리도 가능
}

✅ 6. Service 클래스 생성

package com.example.gallery.service;

import com.example.gallery.domain.User;
import com.example.gallery.repository.UserRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> findAll() {
        return userRepository.findAll();
    }

    public User save(User user) {
        return userRepository.save(user);
    }
}


✅ 7. Controller 생성