본문 바로가기

전체 글

(1366)
Spring Boot Web의 Tomcat을 Jetty로 대체, Swagger연동 Tomcat 실행이 체감상 느려서 Jetty로 바꾸어보았습니다. 그랬더니 조금 빨라졌습니다. Jetty로 대체 dependencies { implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation "org.springframework.boot:spring-boot-starter-jetty" } 잘 적용 되었다면 아래와 같이 나옵니다. Maven org.springframework.boot spring-boot-starter-web org.springframework.bo..
JdbcTemplate정리, Hikari Pool과 연동 DDL Create Table employee라는 이름의 테이블을 만듭니다. 컬럼은 id, name, contents 3개 입니다. if not exists 가 들어있어서 없을때만 create table을 실행하고 테이블이 존재한다면 실행하지 않습니다. .update()를 썼기 때문에 리턴값이 0입니다. public int createTable() { // table이 있는지 먼저 check return this.jdbcTemplate.update(String.format("create table if not exists employee(id bigint, name varchar, contents text)")); } With Primary Key public int createTable() { // t..
Java File다루기 ./(현재 디렉토리)의 파일 목록 출력 @Test void fileList(){ File dir = new File("./"); File files[] = dir.listFiles(); for (File file : files) { System.out.println(file); } } 결과 ./gradle ./gradlew ./build.gradle ./.gradle ./build ./gradlew.bat ./settings.gradle ./.idea ./src 파일 생성하기 ./ 의 파일 목록을 보았으니 ./에 numbers.txt 파일을 생성 해보겠습니다. @Test void createANewFile() throws IOException { File file = new File("./numbers...
Spring Jdbc로 mysql datetime 타입의 데이터 넣기 결론부터 이야기 하자면 Jdbc로 MySql의 Datetime타입에 값을 넣을 때 LocalDateTime을 이용하고 db에 insert할 때는 Timestamp로 바꿔서 합니다. 위 table의 created_at이 MySql datetime 타입 입니다. public class CarModel { private int id; private String name; private int level; private LocalDateTime createdAt; } Model은 LocalDateTime으로 했습니다. public void add(CarModel carModel) throws SQLException { this.jdbcContext.workWithStatementStrategy(new State..
Java 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 Season1 { 봄, 여..
토비의스프링3 JdbcTemplate의 queryForObject 토비의 스프링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..
동생을 키워 보자 - 제5편 MySql과 GitLab 이슈, insert, Function못짬 이제 입사한지 2주가 되었습니다. 지난 15일에 입사해서 26일까지 딱 2주 출근 했네요. 처음에 시켰던 것은 CRUD를 해보라는 것이었는데 어찌어찌 하긴 했습니다. 이렇게 깃랩에 이슈를 생성해서 체크 하는 방식으로 진행을 한주 해보았습니다. 이런식으로 db설치하는 것부터 진행 했습니다. DB연동과 select 여기에 vue.js까지 나름 열심히 시켰습니다. 본인도 책도 떼고 인터넷 강의도 떼고 했는데 3주정도 된 시점에서 간단한 function을 구현하지 못했습니다. 이 function에 대한 이해를 하는게 또 하나의 산인것 같습니다. 가장 처음 보는 책인 자바책들에는 이 function에 대한 언급만 몇장 있지 어떻게 구현 해야 하는지 연습은 어떻게 하는지 등이 대체로 빠져있는 것 같더라구요. jav..
토비의 스프링3 JdbcContext만들기 Context는 '맥락'이라는 뜻 입니다. 여기에서 context는 JDBC를 이용해 DB를 업데이트 한다는 변하지 않는 맥락이 있습니다. 맥락은 스타벅스에서 커피를 주문 하는 것과 비유를 해보면 1.고객은 스타벅스 직원에게 메뉴들을 주문하고 2.직원은 전체 얼마인지 계산을 해서 고객에게 알려주고 3.고객은 결제를 하고 4.주문한 메뉴들이 만들어 지면 받아가는 맥락입니다. 여기에서 핵심 메소드는 executeSql입니다. executeSql은 Sql문을 받아서 실행을 해주는 역할을 하고 있습니다. public class JdbcContext JdbcContext클래스는 DataSource를 외부에서 받아주는 기능이 있고 executeSql은 workWithStatementStrategy에 Prepared..