원래 되는 쿼리 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; } } ..
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..
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..
MVC 1. MVC Model-View-Controller Model: 뷰가 렌더링하는데 필요한 데이터 ex) 사용자가 요청한 상품 목록, 주문 내역 View: 실제로 보이는 부분으로, 모델을 사용해 렌더링한다. 뷰는 JSP, JSF, PDF, XML 등으로 결과를 표현한다. Controller: 사용자의 액션에 응답하는 컴포넌트. 모델을 업데이트하고 다른 액션을 수행한다. 2. MVC Model1 요청을 JSP가 받는다. JSP에서 뷰와 컨트롤러가 구현된다. bean을 이용하여 데이터를 가져온다. Model1은 클라이언트로부터 요청이 들어오면 JSP가 요청받아 처리하면서 동시에 뷰의 역할도 같이 한다. 구현이 쉽지만 유지보수가 어렵다. 3. MVC Model2 뷰는 JSP, 컨트롤러는 서블릿으로 작성된..
1. Maven에 Spring JDBC 의존성 추가 #Maven 1 2 3 4 5 org.springframework spring-jdbc ${spring.version} cs 2. DBConfig 클래스 작성 [DBConfig.java] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 @Configuration @EnableTransactionManagement public class DBConfig implements TransactionManagementConfigurer { private String driverClassName = "com.mysql.jdbc.Driver"; private String url =..
@Configuration java config(스프링 설정 클래스)라는 의미를 가짐 java config로 설정을 할 클래스 위에는 @Configuration이 붙어 있어야 한다 Example01: java config 내부에서 빈 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Configuration public class ApplicationConfig { @Bean public Car car(Engine e) { Car c = new Car(); c.setEngine(e); return c; } @Bean public Engine engine() { return new Engine(); } } public class E..