스프링의 데이터 엑세스

YJS·2024년 2월 14일
0

Spring Boot 탐구

목록 보기
11/11
post-thumbnail

🤓오늘의 공부 주제: jdbc, jpa, mybatis🤓

Q. 스프링에서 데이터 엑세스는 어떻게 이루어지는가?

A. 스프링에서의 데이터 액세스는 주로 JDBC, JPA, 그리고 MyBatis를 사용하여 이루어진다.

Q. JDBC는 무엇인가?

A. JDBC는 자바에서 데이터베이스와의 연결과 쿼리 실행을 위한 API이다. 이를 사용하면 데이터베이스와 직접적인 연결을 설정하고 SQL 쿼리를 실행할 수 있다.

JDBC를 사용하면 데이터베이스에 대한 세부적인 제어가 가능하며, 직접 SQL 쿼리를 작성하여 실행할 수 있다. 그러나 JDBC를 사용할 경우에는 보다 많은 코드 작성과 반복적인 작업이 필요할 수 있다.

Q. JDBC는 무엇인가?

A. JDBC(ava Database Connectivity)는 자바에서 데이터베이스와의 연결과 쿼리 실행을 위한 API이다. 이를 사용하면 데이터베이스와 직접적인 연결을 설정하고 SQL 쿼리를 실행할 수 있다.

JDBC를 사용하면 데이터베이스에 대한 세부적인 제어가 가능하며, 직접 SQL 쿼리를 작성하여 실행할 수 있다. 그러나 JDBC를 사용할 경우에는 보다 많은 코드 작성과 반복적인 작업이 필요할 수 있다.

JDBC를 사용한 데이터베이스 연동

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydatabase", "username", "password");

            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");

            while (rs.next())
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));

            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Q. JPA란 무엇인가?

A. JPA(Java Persistence API)는 자바에서 객체와 관계형 데이터베이스 간의 매핑을 지원하는 API이다. 객체지향 프로그래밍에서는 객체를 데이터베이스에 저장하고 검색하는 과정에서 객체와 테이블 간의 매핑이 필요한데, JPA는 이러한 작업을 간편하게 처리할 수 있도록 도와준다.

JPA를 사용하면 객체와 테이블 간의 매핑을 어노테이션을 통해 설정할 수 있으며, 개발자는 객체를 중심으로 코드를 작성할 수 있다.

JPA를 사용한 데이터베이스 연동

import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "mytable")
public class JpaExample {
    @Id
    private int id;
    private String name;
    private String email;

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence-unit-name");
        EntityManager em = emf.createEntityManager();

        Query query = em.createQuery("SELECT e FROM JpaExample e");
        List<JpaExample> results = query.getResultList();

        for (JpaExample e : results)
            System.out.println(e.getId() + "  " + e.getName() + "  " + e.getEmail());

        em.close();
        emf.close();
    }

    // Getter and Setter methods
}

Q. MyBatis는 무엇인가?

A. MyBatis는 SQL 매핑 프레임워크로, SQL 쿼리와 자바 객체 사이의 매핑을 XML 또는 어노테이션을 통해 설정할 수 있다.

MyBatis를 사용하면 SQL 쿼리를 직접 작성하고 실행할 수 있으며, 동적 쿼리를 쉽게 처리할 수 있는 장점이 있다. 또한 MyBatis는 JDBC를 사용하고 있기 때문에 JDBC에 비해 더 빠르고 유연한 데이터 액세스가 가능하다.

MyBatis를 사용한 데이터베이스 연동

<!-- mybatis-config.xml -->
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
        <property name="username" value="username"/>
        <property name="password" value="password"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/MyMapper.xml"/>
  </mappers>
</configuration>
// MyMapper.xml
<mapper namespace="com.example.MyMapper">
  <select id="selectUsers" resultType="User">
    SELECT * FROM mytable
  </select>
</mapper>
// MyMapper.java
package com.example;

import java.util.List;

public interface MyMapper {
    List<User> selectUsers();
}
// MyBatisExample.java
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

public class MyBatisExample {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().

profile
우당탕탕 개발 일기

0개의 댓글