[스프링] JPA와 데이터베이스 연동

스프링 프레임워크는 JPA(Java Persistence API)와 데이터베이스를 쉽게 연동할 수 있는 기능을 제공합니다. JPA는 자바 개체를 관계형 데이터베이스와 매핑하기 위한 API이며, 스프링은 JPA와의 통합을 통해 데이터베이스 연동을 간편하게 처리할 수 있습니다.

JPA 설정

@Configuration
@EnableTransactionManagement
public class JpaConfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource);
        em.setPackagesToScan("com.example.model");
        
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);

        return em;
    }

    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(emf);
        return transactionManager;
    }
}

위의 설정은 LocalContainerEntityManagerFactoryBean을 사용하여 JPA를 활성화하고, dataSourceEntityManagerFactory를 설정합니다.

엔티티 클래스 생성

@Entity
@Table(name = "employee")
public class Employee {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "name")
    private String name;
    
    // Getters and Setters
}

위의 코드는 @Entity 어노테이션으로 해당 클래스가 JPA 엔티티임을 명시하고, @Table 어노테이션으로 테이블과 매핑합니다. 또한 @Id@Column 어노테이션을 사용하여 각 필드를 기본 키 및 열과 매핑합니다.

Repository 인터페이스 생성

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
    // 추가적인 메서드 정의 가능
}

위의 코드는 JpaRepository를 상속하는 인터페이스로, JPA에 의해 엔티티에 대한 CRUD 기능을 제공합니다. 추가적으로 메서드를 정의하여 사용자 정의 쿼리를 실행할 수도 있습니다.

이러한 설정과 코드를 사용하여 스프링 프레임워크를 통해 JPA와 데이터베이스를 연동할 수 있습니다.

참고 자료: