22:33 WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Failure in @ExceptionHandler public org.springframework.http.ResponseEntity kr.p.eye.platform.member.MemberExceptionHandler.handleMemberException(kr.p.eye.platform.member.MemberException) org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class kr.p.eye.platform.common.error.Error]; ..
public int thubmsUpComment(int commentId, int memberNo) { Map params = new HashMap(); params.put("commentId", commentId); params.put("memberNo", memberNo); System.out.println(params); return insertAction.executeAndReturnKey(params).intValue(); } 오류 : comment_id 는 null이 될 수 없다 = commentId를 파라미터로 찾지 못한다 수정: 객체로 넣어준다 public int thubmsUpComment(int commentId, int memberNo) { CommentUp commentUp = ne..
항상 inner join만 해도 문제가 없었음. 왜냐하면 양쪽에 데이터가 있는 경우만 다뤘기 때문 SELECT V.*, count(c.id) AS comment_count FROM ( SELECT e.product_id, e.id AS episode_id, @rownum :=@rownum+1 AS episode_no, p.title, e.create_date FROM episode_info e INNER JOIN product p ON p.id = e.product_id , (SELECT @rownum := 0) r WHERE e.product_id = :productId ) V INNER JOIN episode_comment c ON v.episode_id = c.episode_id WHERE epis..
원래 되는 쿼리 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..