Enum이란? Enum은 enumeration 에서 앞에 4글자 입니다. 보통 열거형이라고 번역 되어 있습니다. 어플리케이션이 복잡해지다 보면 에러가 날 가능성도 올라가는데 넣을 수 있는 값들을 Enum에 미리 지정 해놓고 그 값 말고 다른 값들을 넣지 못하게 하여 에러를 방지하는 목적으로 사용 합니다. 예를들면 계절은 4계절 뿐이고 요일도 월~일이렇게 7일뿐입니다. 그래서 이 밖에 값들을 입력 할 수 없게 미리 정해 놓는 것입니다. public enum Season { 봄(1), 여름(2), 가을(3), 겨울(4); private final int value; Season(int value) { this.value = value; } } 보통은 위와 같이 사용 합니다. public enum Season..
토비의 스프링3를 따라하면서 Spring버젼이 올라가면서 바뀐부분이 있어서 정리해서 올려놓습니다. 3장 Template queryForInt --> queryForObject 토비의스프링3를 따라하다가 JdbcContext를 JdbcTemplate으로 바꿔주는 구간에서 책이 오래 되었기 때문에 스프링을 최신버젼(저는 5버젼)을 쓰면 따라하기 힘든 구간이 나옵니다. public int getCount() throws SQLException { StatementStrategy st = new StatementStrategy() { @Override public PreparedStatement makePreparedStatement(Connection c) throws SQLException { Prepare..
Context는 '맥락'이라는 뜻 입니다. 여기에서 context는 JDBC를 이용해 DB를 업데이트 한다는 변하지 않는 맥락이 있습니다. 맥락은 스타벅스에서 커피를 주문 하는 것과 비유를 해보면 1.고객은 스타벅스 직원에게 메뉴들을 주문하고 2.직원은 전체 얼마인지 계산을 해서 고객에게 알려주고 3.고객은 결제를 하고 4.주문한 메뉴들이 만들어 지면 받아가는 맥락입니다. 여기에서 핵심 메소드는 executeSql입니다. executeSql은 Sql문을 받아서 실행을 해주는 역할을 하고 있습니다. public class JdbcContext JdbcContext클래스는 DataSource를 외부에서 받아주는 기능이 있고 executeSql은 workWithStatementStrategy에 Prepared..
@Slf4j @Controller @RequestMapping("/api/v1/data/invalid_request/") @RequiredArgsConstructor public class InvalidRequestController { private final InvalidRequestService invalidRequestService;필드 DI를 제발좀 쓰지 말라고 하도 뭐라고 해서 컨스트럭터 di로 바꾸고 있는데 final로 선언을 해주면 그 부분을 자동화 해주는 애노테이션이 있다는 것을 알게 되었습니다. 위와 같이 씁니다. 그러면 @Autowired도 안써도 돼고 constractor도 없어도 됩니다. 그런데 final을 꼭 붙여야 합니다. 안그러면 null나와욤
jpa app 운영 배포 전략 jpa로 앱을 만들고 백엔드 서버를 운영 할 때 db에 컬럼이 추가 되는 경우가 있습니다. jpa같은 경우는 서버가 뜰 때 db하고 entity하고 매핑을 한 다음에 뜹니다. 예를들면 entity에 phone이라는 필드가 있지만 db에는 없는 경우는 매핑이 되지 않아서 서버가 뜨지 않습니다. 그래서 jpa에는 hibernate.ddl-auto에 update라는 옵션이 있는데 prod에는 보통 update는 해놓지 않고 validate로 해놓습니다. 이 옵션을 update로 해놓고 수정한 서버를 재부팅 하면 entity하고 db의 field와 비교를 해서 db의 field에 alter를 해서 컬럼을 추가합니다. 왠지 이야기만 들어도 문제가 생길 것 같지 않으신가요? 컬럼이 추..
Parameter 2개 이상 보내기 @RestController @RequestMapping(value = "/api/v1/order") public class DistributeController { // http://localhost:8080/api/v1/order/distribute?id=1111&name=krk 이렇게 요청한다. @GetMapping(value = "/distribute") public String getOrder(@RequestParam int id, @RequestParam String name) { System.out.println(id); System.out.println(name); }결과 1111 krkTransferController.java @Slf4j @RestCo..
개요 값이 없다면 에러가 나게 코드를 짜는 패턴은 흔하게 등장합니다. 에러를 나게 할 때마다 if조건을 넣어서 특정 조건일때 혹은 아닐때 에러가 나게 한다면 에러처리가 귀찮고 잘 안하게 됩니다. 하지만 orElseThrow()를 쓴다면 이 작업이 조금 편해져서 에러에 대해 생각할 시간과 인내심을 확보 할 수 있습니다. 아래 orElseThrow()를 쓰는 경우와 안쓰는 경우를 비교해보시기 바랍니다. orElseThrow()쓰는 경우 import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.Stack; public class StTest { public static String get() thr..
Spring Boot에 Cache넣기 spring-boot-starter-cache만 import 하면 ConcurrentHashMap이 캐시 클래스가 된다. 이 클래스는 expire를 수동으로 해줘야 한다. 그래서 expire time을 줄 수 있는 caffein cache를 쓰는 것. pom.xml org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine 2.6.2 main(){ @SpringBootApplication @EnableCaching public class ChartDataServer extends SpringBootServletInitializer {} CacheType.java im..
JPA에서 복수키 만들기@IdClass(OhlcvHour.OhlcvHourKey.class) public class OhlcvHour { @Id private String currencyPair; @Id private LocalDateTime timeToHours; @EqualsAndHashCode @Embeddable static class OhlcvHourKey implements Serializable { @Column(columnDefinition = "varchar(10)") private String currencyPair; @Column(name = "TIME_TO_HOURS", nullable = false) private LocalDateTime timeToHours; } }복수키를 만들..
영속성 컨텍스트란? 영속성 컨텍스트를 쓰는 이유 준영속성이란? method query db와 mapping하는법 ddl-auto 옵션에 따라 작동하는 방법 join하는 방법. 1:1, 1:N, N:N @Join을 위한 domain 설계 - match와 team id를 예제로 기존에 있는 table을 jpa로 index잡는법 slow query는 어떻게 해결할 것인가? 캐싱(caching)은 어떻게 할 것인가? query dsl 어려운 점 join을 걸었을 때 속도 이슈 왜냐하면 join걸었던 table에도 모두 select를 걸어줌 데이터를 쓰지 않을 경우 손해 db가 변경 되었을 때 초보자가 만지면 데이터가 모두 날아갈 수 있다. group by문제 jpa에서 group by를 쓰기 어려움 테스트 하는..
- Total
- Today
- Yesterday
- 개발자
- vim
- 도커각티슈케이스
- 이직
- docker container tissue box
- docker container whale
- 도커티슈케이스
- 도커티슈박스
- Sh
- 2017 티스토리 결산
- docker container case
- shellscript
- 싱가폴
- Linux
- docker container
- docker container tissue
- 도커컨테이너
- 도커각티슈박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |