A. 스프링에서의 데이터 액세스는 주로 JDBC, JPA, 그리고 MyBatis를 사용하여 이루어진다.
A. JDBC는 자바에서 데이터베이스와의 연결과 쿼리 실행을 위한 API이다. 이를 사용하면 데이터베이스와 직접적인 연결을 설정하고 SQL 쿼리를 실행할 수 있다.
JDBC를 사용하면 데이터베이스에 대한 세부적인 제어가 가능하며, 직접 SQL 쿼리를 작성하여 실행할 수 있다. 그러나 JDBC를 사용할 경우에는 보다 많은 코드 작성과 반복적인 작업이 필요할 수 있다.
A. JDBC(ava Database Connectivity)는 자바에서 데이터베이스와의 연결과 쿼리 실행을 위한 API이다. 이를 사용하면 데이터베이스와 직접적인 연결을 설정하고 SQL 쿼리를 실행할 수 있다.
JDBC를 사용하면 데이터베이스에 대한 세부적인 제어가 가능하며, 직접 SQL 쿼리를 작성하여 실행할 수 있다. 그러나 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);
}
}
}
A. JPA(Java Persistence API)는 자바에서 객체와 관계형 데이터베이스 간의 매핑을 지원하는 API이다. 객체지향 프로그래밍에서는 객체를 데이터베이스에 저장하고 검색하는 과정에서 객체와 테이블 간의 매핑이 필요한데, 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
}
A. MyBatis는 SQL 매핑 프레임워크로, SQL 쿼리와 자바 객체 사이의 매핑을 XML 또는 어노테이션을 통해 설정할 수 있다.
MyBatis를 사용하면 SQL 쿼리를 직접 작성하고 실행할 수 있으며, 동적 쿼리를 쉽게 처리할 수 있는 장점이 있다. 또한 MyBatis는 JDBC를 사용하고 있기 때문에 JDBC에 비해 더 빠르고 유연한 데이터 액세스가 가능하다.
<!-- 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().