일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- Spring Batch
- linux
- Spring
- springboot
- devops
- redis
- java
- jenkins
- 요리
- it
- IntelliJ
- JVM
- Oracle
- laravel
- Design Patterns
- 맛집
- tool
- AWS
- Spring Boot
- javascript
- db
- Git
- ubuntu
- jsp
- MySQL
- elasticsearch
- Gradle
- php
- Web Server
- ReactJS
- Today
- Total
목록전체 (810)
아무거나
Mysql에서 DB에 Multi Values를 통하여 여러 row를 한 번에 insert 하는 방식을 사용하였다. (Mysql에서는 Bulk Insert라고도 불린다) * Bulk Insert : 3개의 row가 기본적으로 하나의 transaction에서 처리가 된다. 즉, 3개 중 하나라도 필수값을 지키지 않는다거나 하는 경우 모두 rollback이 됨을 의미한다. 그러나 애플리케이션에서 다량의 Values를 생성하여 DB로 질의를 전달할때 DB측에서 받아들일 수 있는 Packet 제한이 있어에러가 발생한다. [error example]### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (30321018 > 167..
예를 들어 아래와 같은 Mapper Method와 User Entity가 존재한다고 가정하자. [User.java]@Getter @Setter public class User { private int id; private String password; private String passwordConfirm; private String loginId; private String userName; private int active; private String accessToken; } [UserMapper.java]@Transactional int setUserInfo(@Param("param") User param); setUserInfo를 id로 매핑되어있는 Mapper.xml 파일을 확인하면 아래와 같..
Spring Boot 기준으로 작업하는 도중에 실행되는 SQL Log를 직접 콘솔에서 확인하고 싶었다.그래서 logback.xml에서 아래와 같이 설정하면 된다. [logback.xml]level을 DEBUG로 해놓아야지만 로그가 출력된다. INFO로 설정하면 출력되지 않는다.logger name은 출력하고 싶은 패키지 경로를 지정하면 된다. ... * 출력은 아래와 같이 패키지 경로와 메소드명, 그리고 쿼리문과 파라미터 및 개수 등이 출력된다.
작업을 하는 도중에 카테고리 코드를 조회하는 쿼리가 있었다. 성능 이슈로 인하여 해당 코드의 collation은 latin이였고 관리자 시스템쪽에는 전체필터를 주었을때 해당 코드컬럼에 대한 필터도 거치므로 한글조회를 할 시 오류가 검출되었다. 그래서 쿼리에서 직접 convert하여 조회하는 부분으로 수정하였다. [ex] As-is OR master_code = #{param.allSearch} To-be OR master_code = CONVERT(#{param.allSearch} USING utf8) 위와 같이 Converting하여 조회를 하면 된다.
개발을 하던 도중에 다량의 데이터를 한번에 update 할 시에는 무척 오래걸려서 db옵션을 수정하는 등 조치를 취하는 경우가 있다. 그래서 단 건(ex: 10000 건) 정도로 여러번 업데이트 하는 방법으로 로직을 변경하였고 while문을 이용하여 change개수가 0일 경우에는 break로 빠져나오게끔 만들었다. 그러나 mybatis에서 change개수가 계속 0으로만 return되는 문제가 발생하였다. 확인해보니 설정파일 즉, db접속 url parameter에 아래와 같이 추가하자. jdbc:mysql://127.0.0.1:3306/test_db?useSSL=false&characterEncoding=utf8&useAffectedRows=true 위의 useAffectedRows=true 로 옵션..
스프링 부트에서 테스트 코드를 작성할 때 간단하게 기술한것이다. // 버전: 2.0.6 testCompile('org.springframework.boot:spring-boot-starter-test') import com.wmp.admin.category.entity.VendorCategoryMap; import com.wmp.admin.category.mapper.CategoryMapMapper; import com.wmp.admin.category.mapper.CategoryMapRequireMapper; import java.time.LocalDateTime; import org.junit.Test; import org.junit.runner.RunWith; import org.springfram..
작업을 하는 도중에 소스는 작업이 되었으나 웹 페이지에서 반영이 안된 경우가 있었다. 소스를 아무리 고쳐도 반영이 안될 때(java, js, html 등 모두) 소스엔 이상이 없고 반영이 안되서 다른 부분을 수정하여 반영해도 반영이 안될 때 이와 같은 경우 정말 골치가 아팠다. 아무 에러도 안뜨며 다른 소스를 수정해도 그 또한 반영이 되지않는 골치아픈 상황이 발생하였다. 원인은 날짜 변경에 대한 class 오류거나 톰캣서버에서 문제가 생기는 경우가 있다고한다. 해결책은 아래와 같다. 생성된 서블릿파일(java, class 파일)을 지우면 된다. 보통 톰캣이면 해당 프로젝트 work 폴더에 가보면 현재 서버로 돌고 있는 파일들의 목록이 확인 가능하다. 여기 있는 파일을 전부 지우기 또는 서버를 재 시작하면..
Mybatis 작업도중에 Invalid bound statement (not found) 에러가 발생했을때를 알아보자.자주 실수하여 발생하는 문제는 아래와 같다 - Mapper Interface와 Mapping되는 .xml 파일에 오타가 있을 경우(ex: Mapper Interface에 선언한 메서드명과 .xml에 매핑하는 id값과 일치하지 않을 때)- classpath에 경로가 잘못될 경우 [ex]mybatis: mapper-locations: classpath:mapper/**/*.xml 보통 개발을 하면서 자주하는 실수들이므로 주의해서 작성하자.
회원가입을 할 때 가입폼에서 패스워드 정책이나 아이디 가입정책등이 필요한 경우가 있다. 이 경우 자바스크립트로 구현한 소스를 참고하자. [HTML] [스크립트]var login = { init: function () { }, noSpaceCheck: function (obj) { var str_space = /\s/; if(str_space.exec(obj.value)) { alert("해당 항목에는 공백을 사용할수 없습니다.\n\n공백은 자동적으로 제거 됩니다."); obj.focus(); obj.value = obj.value.replace(' ',''); return false; } }, memberReg: function () { var loginId = $('#loginId').val(); va..