본문 바로가기

분류 전체보기

(87)
[Spring] [Spring JDBC] 5. Spring JDBC 실습 진행 3 - insert(), update() 앞선 selectAll() 실습에서 ApplicationConfig 관련 설정은 전부 다 했으므로, RoleDao 클래스에 insert, update 관련 부분만 작성해주면 된다. 1. RoleDaoSqls 에 쿼리문 추가하기 update는 sql문을 추가해주어야 한다. 따라서, RoleDaoSqls에 다음과 같은 sql을 추가하자 public class RoleDaoSqls { public static final String SELECT_ALL = "SELECT role_id, description FROM role ORDER BY role_id"; public static final String UPDATE = "UPDATE role SET description = :description where ..
[Spring] [Spring JDBC] 4. Spring JDBC 실습 진행 2 - selectAll() 필요한 것들 DTO 만들기 데이터를 주고받을 DTO 만들어야 한다 RoleDaoSqls 클래스 - 해당 클래스에 select 하는 쿼리 상수 포함 DAO 만들기 어떤 하나의 객체(여기서는 Role 객체)에 대한 데이터를 엑세스 할 수 있는 객체이다. (Data Access Object) 스프링 컨테이너가 빈으로 등록해야 하므로, @Repository 어노테이션 붙이기 이미 Spring JDBC에서 구현해둔 NamedParameterJdbcTemplate, SimpleJdbcInsert 객체를 사용하여, selelctAll() 메서드를 작성한다. ApplicationConfig에 @ComponentScan 붙이기 1. DTO public class Role { private int roleId; priva..
[Spring] [Spring JDBC] 3. Spring JDBC 실습 진행 들어가기 전 maven archetype의 maven-archetype-quickstart로 프로젝트를 생성하였다. spring Initializer로 하지 않았다는 것을 알고 있자. (정확한 차이는 모르겠지만, maven-archetype-quickstart으로 진행하는 것이 dependency 설정을 더 자잘하게 해주는 느낌이다. spring-context, spring-jdbc, spring-tx 를 추가하기 때문) 1. pom.xml에 필요한 dependency 추가하기 spring-context spring-jdbc spring-tx mysql driver datasource(apache에서 제공하는 datasource) org.springframework spring-context ${spri..
[Spring] [Spring JDBC] 2. Spring JDBC 실습 개요 DTO란? DTO란 Data Transfer Object의 약자입니다. 계층간 데이터 교환을 위한 자바빈즈입니다. 여기서의 계층이란 컨트롤러 뷰, 비지니스 계층, 퍼시스턴스 계층을 의미합니다. 일반적으로 DTO는 로직을 가지고 있지 않고, 순수한 데이터 객체입니다. 필드와 getter, setter를 가진다. 추가적으로 toString(), equals(), hashCode()등의 Object 메소드를 오버라이딩 할 수 있습니다. DTO의 예 public class ActorDTO { private Long id; private String firstName; private String lastName; public String getFirstName() { return this.firstName; } ..
[Spring] [Spring JDBC] 1. Spring JDBC 개요 Spring JDBC가 지원하는 기능 - 개발자가 할 일은? SpringJDBC 패키지 org.springframework.jdbc.core JdbcTemplate 및 관련 Helper 객체 제공 org.springframework.jdbc.datasource DataSource를 쉽게 접근하기 위한 유틸 클래스, 트랜젝션매니져 및 다양한 DataSource 구현을 제공 org.springframework.jdbc.object RDBMS 조회, 갱신, 저장등을 안전하고 재사용 가능한 객제 제공 org.springframework.jdbc.support jdbc.core 및 jdbc.object를 사용하는 JDBC 프레임워크를 지원 JdbcTemplate org.springframework.jdbc.cor..
[JDBC] Statement, PrepareStatement 차이점 자바에서 데이터베이스로 쿼리문을 전송할 때 사용하는 인터페이스 2가지이다. 각각을 알아보고, 차이점을 알아보자 1. Statement 1. getConnection()을 통해 Connection 객체를 얻고, Connection 객체의 createStatement()를 통해 얻는다 // String url = "jdbc:mysql://mysql엔드포인트:3306/playdata?serverTimezone=UTC"; // Connection con = DriverManager.getConnection(url, "encore", "playdata"); // DBUtil.getConnection()은 위 두 문장을 간소화 시킨 것이다. con = DBUtil.getConnection(); stmt = con...
[Spring] [Test] 단위테스트 작성하기 (1) - Mock객체 통합테스트 vs 단위 테스트 통합테스트 빈들 간에는 다양한 관계를 갖는 경우가 많다. 따라서 하나의 빈을 사용한다는 것은, 관계된 빈들도 함께 동작한다는 것을 의미한다. 따라서, "하나의 빈을 테스트할 때, 관련된 빈들이 모두 잘 동작하는지 테스트하는 것"을 통합테스트라고 한다. 단위테스트 하나의 빈을 테스트 할 때, "관계된 빈들과는 상관없이 해당 빈이 가지고 있는 기능이 잘 동작하는지만 확인하는 것"을 단위테스트라고 한다. 단위테스트를 위해, 관계된 빈을 Mock 객체로 대신하게 된다. 단위테스트 해보기 의존성 주입 mockito-core와 mockito-junit-jupiter를 추가해주자 mockito-core : mockito가 제공해주는 기본적인 라이브러리 mockito-junit-jupite..
[Spring] [Test] 스프링 테스트 어노테이션들(@ExtendWith, @SpringBootTest 등) 스프링 부트를 사용하지 않는 경우 JUnit4 @RunWith 기존 테스트 클래스 위에 @RunWith(SpringJUnit4ClassRunner.class)를 붙입니다. @RunWith 어노테이션은 JUnit이 제공하는 어노테이션입니다. JUnit은 확장기능을 가지는데, 스프링에서는 JUnit을 확장하도록 SpringJUnit4ClassRunner.class를 제공합니다. 해당 코드는 JUnit이 테스트 코드를 실행할 때 스프링 빈 컨테이너가 내부적으로 생성되도록 합니다. @ContextConfiguration @ContextConfiguration(classes = {ApplicationConfig.class})은 내부적으로 생성된 스프링 빈 컨테이너가 사용할 설정파일을 지정할 때 사용합니다. JUn..
[Spirng] [Test] JUnit 테스트 시작해보기 & 자주 사용하는 어노테이션 어떤 메서드를 만들고 나서, 해당 메서드가 잘 동작하는지 테스트 해보는 것은 매우 중요한 일이다. 자바에서 JUnit이라는 라이브러리를 제공하는데, 이에 대해 알아보자. 언어별로 테스트를 위한 프레임워크가 있는데, xUnit으로 이름이 붙는다. 자바의 경우, JUnit이 테스트를 위한 프레임워크이다. 사실, JUnit을 사용하려면 JUnit 라이브러리가 클래스패스(CLASSPATH)에 존재해야 한다. 하지만, 빌드 도구(gradle, maven)를 사용하면, JUnit을 디펜던시로 추가하여 편리하게 사용할 수 있다. 한편, 아주 편리한 스프링부트를 사용하면, 기본적으로 springboot-starter-test 디펜던시가 추가되기 때문에, 아예 신경쓰지 않아도 된다. 참고로, 스프링부트는 2.7.3버전 ..
[Spring] 컨테이너에 빈을 등록하는 방법 (1. xml파일 2. java config 파일) 스프링 컨테이너는, 객체를 빈으로 등록한 후, IoC와 DI를 진행한다. 컨테이너에 빈으로 등록하는 방법은 2가지가 있는데, 아래와 같다. 추가적으로, 스프링 컨테이너는 기본적으로 빈을 싱글톤으로 관리한다. (싱글톤 : 객체의 인스턴스가 오직 1개라는 뜻) 1. xml 파일 아래와 같이, main 아래 resource 패키지에 위치하게 된다. 아래와 같이 id와 class를 주면, bean을 등록할 수 있다. property 설정 또한 가능하다. 2. java Config 파일 java config 클래스로 빈을 등록할 수 있다. config 클래스로 빈을 등록하는 방법 1 자바 class 위에 @Configuration을 붙인다 @Bean으로 객체를 빈으로 직접 등록한다 config 클래스로 빈을 등록..