원래 되는 쿼리 SET @rownum := 0; SELECT e.product_id, e.id AS episode_id, @rownum := @rownum +1 AS episode_no, e.episode_name, e.star_score, e.create_date FROM episode_info e INNER JOIN product p ON p.id = e.product_id WHERE e.product_id = :productId ORDER BY episode_no DESC BUT jdbcTemplate은 .query에 한문장이라 오류남 수정 SELECT e.product_id, e.id AS episode_id, @rownum := @rownum +1 AS episode_no, e.episode_n..
@ComponentScan ((basePackages = {"WebMvcContextConfiguration이 들어가있는 패키지"}) 를 실행하면 Error creating bean with name 'resourceHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate..
Service #Service Layer: 핵심 업무(비즈니스 로직)을 수행한다 Service 클래스 작성하기 인터페이스와 그 구현객체를 생성한다. 각 클래스 위에 @Service를 붙인다. #ComponentScan 인터페이스 [RoleService.java] 1 2 3 4 5 6 7 8 9 @Service public interface RoleService { public static final int LIMIT = 5; public Guestbook addRole(Role role); public int deleteRole(int id); public List getRoles(); public int getRoleCount(); } Colored by Color Scripter cs [RoleSer..
#DTO, DAO #DAO (JDBC Template) RowMapper DB의 컬럼명과 클래스의 필드명이 다른 경우 생성 (보통 JOIN TABLE) cf) DB의 컬럼명과 클래스의 필드명이 같은 경우: #BeanPropertyRowMapper 1 2 3 4 5 6 7 8 9 10 11 12 public class RoleMapper implements RowMapper { @Override public Role mapRow(ResultSet rs, int rowNum) throws SQLException { Role role = new role(); role.setRoleId(rs.getInt(1)); role.setDescription(rs.getString(2)); return role; } } ..
Null Object Pattern 1. Null Object Pattern이란? 객체가 존재 하지 않는 경우의 처리를 위해 많은 경우 if (ref == null) 혹은 try catch 구문을 사용해서 예외 처리를 한다. Null Object Pattern이란 유저가 직접 null check를 하지 않고, 정의된 액션을 수행을 하지만 수행의 내용은 비어있는 빈 객체를 기본으로 제공해 줌으로서 예외 처리를 사전에 피하는 안전한 방식의 프로그래밍 패턴이다. 특히 DB에서 데이터를 가지고 오는 경우 id값에 따라 null을 가져올 가능성이 매우 높고, 이를 미리 예측하기도 힘든 경우가 많다. 이럴 경우 예외처리를 하는 것은 가독성을 떨어뜨릴 수 있어 Null Object Pattern을 사용해서 NullP..
Connectin Pool 1. 커넥션 풀 2. DataSource 커넥션 풀을 관리하는 객체 커넥션을 얻어오고 반납하는 등의 작업을 수행 [사용법] 1. Maven에 DataSource 의존성 추가 (아피치 제공) #Maven 1 2 3 4 5 org.apache.commons commons-dbcp2 2.1.1 cs 2. 객체 만들어서 데이터 연결 후(...) Bean으로 등록 #DBConfig 1 2 3 4 5 6 @Bean public DataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); ... return dataSource; } Colored by Color Scripter cs Spring JDBC 1. S..
SQL 1. SQL(Structed Query Language) 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단 DML (Data Manipulation Language): 데이터를 조작하기 위해 사용. INSERT, UPDATE, DELETE, SELECT DDL (Data Definition Language): 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용. CREATE, DROP, ALTER DCL (Data Control Language) : 데이터를 제어하는 언어. 권한을 관리하고, 테이터의 보안, 무결성 등을 정의. GRANT, REVOKE https://www.edwith.org/boostcourse-web/lecture/16720/ JDBC 1. JDBC(Java Dat..
Maven 1. Maven이란? 자바 프로젝트의 war 또는 jar 파일을 빌드(build), 라이브러리 의존성(dependency) 해결, 컴파일(compile), 배포 (deploy) 등을 자동화해주는 빌드 툴 즉, 자바 소스를 compile하고 package해서 deploy하는 일을 자동화해주는 것이다. https://victorydntmd.tistory.com/159 2. Maven 프로젝트 디렉토리 구조 https://www.edwith.org/boostcourse-web/lecture/16724/ 3. pom.xml Maven 프로젝트에서 필요한 모듈(스프링 기능)을 가져오기 위한 설정파일 POM(Project Object Model)을 설정하는 부분 필요한 라이브러리만 다운로드해서 사용할 수..
Controller(Handler) #Presentation Layer: 요청을 받고 응답하는 역할을 한다. #DispatcherServlet의 설정파일(#WebMvcContextConfiguration)에서 @ComponentScan을 통해 빈으로 등록되었다. Controller(Handler) 클래스 작성하기 클래스 위에 @Controller를 붙인다. #ComponentScan 매핑을 위해 클래스나 메소드 위에 @RequestMapping을 붙인다. #HandlerMapping 1 2 3 4 5 6 7 8 9 10 @Controller public class myController { @GetMapping("/success") // 1. /success URL 요청이 발생하면 success() 메소..
WebMvcContextConfiguration DispatcherServlet이 실행될 때 읽어들이는 설정파일 #DispatcherServlet HandlerMappig, HandlerAdapter, 컨트롤러, ViewResolver 빈이 등록되어 있어야 한다 Maven에 WebMvc 의존성 추가 #Maven 1 2 3 4 5 org.springframework spring-webmvc ${spring.version} cs [WebMvcContextConfiguration.java] 1 2 3 4 5 6 @Configuration @EnableWebMvc @ComponentScan(basePackages = { "mypackage.controller" }) public class WebMvcContex..