JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

Spring

스프링 부트 SQLite DB 연결

lamarcK 2025. 6. 24. 21:22

현재 상황: 단일 DB 설정

spring.datasource.url=jdbc:sqlite:product.db
spring.datasource.driver-class-name=org.sqlite.JDBC

이 설정은 product.db 하나의 SQLite 파일만 사용한다는 뜻.

별도 설정 클랜스 불필요!

Spring Boot가 자동으로 연결

// 이런 코드를 Spring Boot가 자동으로 생성해줌!
@Bean
public DataSource dataSource() {
    // application.properties 설정을 읽어서 자동 생성
}

@Bean 
public EntityManagerFactory entityManagerFactory() {
    // JPA 설정도 자동으로
}

현재 방식 vs 다중 DB 방식 비교

현재 방식 (단일 DB) - 간단함 🎯

# 설정 파일
spring.datasource.url=jdbc:sqlite:product.db
spring.datasource.driver-class-name=org.sqlite.JDBC
// Entity - 그냥 만들면 됨
@Entity
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // ...
}

// Repository - 그냥 만들면 됨
public interface MemberRepository extends JpaRepository<Member, Long> {
}

// 설정 클래스 필요 없음!

다중 DB 방식 - 복잡함 🔧

# 설정 파일
spring.datasource.product.url=jdbc:sqlite:product.db
spring.datasource.user.url=jdbc:sqlite:user.db
// 복잡한 설정 클래스들 필요
@Configuration
public class ProductDataSourceConfig {
    @Bean
    public DataSource productDataSource() { ... }
    // 많은 설정 코드...
}

@Configuration  
public class UserDataSourceConfig {
    // 또 다른 설정 코드들...
}

단일 DB에서 여러 테이블 사용

단일 방식으로도 여러 테이블 사용 가능

// 모두 같은 product.db 파일 안에 저장됨
@Entity
@Table(name = "members")
public class Member { ... }

@Entity
@Table(name = "products") 
public class Product { ... }

@Entity
@Table(name = "orders")
public class Order { ... }

결과:

product.db
├── members 테이블
├── products 테이블  
└── orders 테이블

언제 다중 DB를 사용할까?

단일 DB 사용 (현재 방식) - 추천 🟢

  • 일반적인 애플리케이션
  • 데이터 간 관계가 있을 때
  • 트랜잭션이 중요할 때

다중 DB 사용 - 특수한 경우 🟡

  • 데이터 성격이 완전히 다를 때
  • 보안상 분리가 필요할 때
  • 성능상 분리가 필요할 때

현재 설정으로 할 수 있는 것

@Service
public class BusinessService {

    @Autowired
    private MemberRepository memberRepository;

    @Autowired 
    private ProductRepository productRepository;

    @Autowired
    private OrderRepository orderRepository;

    @Transactional  // 하나의 트랜잭션으로 처리 가능!
    public void createOrder(Long memberId, Long productId) {
        Member member = memberRepository.findById(memberId).orElse(null);
        Product product = productRepository.findById(productId).orElse(null);

        Order order = new Order();
        order.setMember(member);    // 외래키 설정 가능!
        order.setProduct(product);  // 외래키 설정 가능!

        orderRepository.save(order);

        // 모든 변경사항이 하나의 트랜잭션으로 처리됨
    }
}

결론

  • DB 파일 1개 = product.db
  • 설정 클래스 불필요 = Spring Boot 자동 처리
  • 여러 테이블 사용 가능 = 모두 같은 파일 안에
  • 외래키 관계 설정 가능 = 같은 DB 내에서
  • 트랜잭션 처리 간단 = 하나의 DB라서