국내 한정으로만 놓고 보면 Java는 절대적인 영향력을 가진 개발(프로그래밍) 언어입니다. SI 시장을 포함하면 체감상 90% 이상 점유하고 있을 것으로 예상되고, 서비스 회사에서도 아직까지 절반 이상 사용하고 있다고 느껴집니다. 물론 C 언어와 같이 더 오래된 절대왕자도 존재하지만, Web 환경을 위주로 개발할 것이 많은 현재의 국내 상황에선 Java가 절대적인 위치에 있는 건 부인할 수 없습니다. 그런데, 이런 위치의 Java를 악의 축, 쓰레기 정도로 표현하면서 욕을 하는 사람들을 개발자들이 모인 곳에서 심심찮게 볼 수 있습니다. 대충 들어보면 몇 가지 키워드가 들립니다. 전자정부 프래임워크, 높은 메모리 사용량, 실행파일 용량, 컨테이너 비친화적, 장황한 문법, 신기술 적용이 느림 점, Sprin..
2019/03/05 - [Programming/JOOQ] - [JOOQ-04] 좀 더 복잡한 질의 실행해보기 JOOQ 에서는 앞선 예제에서와 같이 Record3 와 같은 Record 을 제공해줍니다. 결과가 3 개일 때에는 Record3, 4 개일 때에는 Record4 을 이용해서 결과를 fetch() 을 통해서 받을 수 있습니다. 하지만, 많이 사용되는 MyBatis 에서도 HashMap 이나 POJO(VO, DTO 등) 형태로 결과를 저장하는게 일반적으로, JPA 에서도 @Entity 로 선언된 POJO 에 바로 결과를 저장하는 것이 일반적입니다. 내부적으로는 Reflection 을 이용하겠죠. 당연히 JOOQ 에서도 POJO 에 바로 저장할 수 있는 기능을 제공합니다. 먼저 앞선 예제의 질의를 그대..
2019/02/28 - [Programming/JOOQ] - [프롤로그] JOOQ 을 사용하게 된 계기 JOOQ 을 어떻게 사용하는건지 아주 간단한 맛보기 프로그램을 만들어보겠습니다. PC 에 docker 을 사용할 수 있는 환경을 구축한 후 MySQL 8 을 설치하였습니다. jooq 라는 계정을 만들고 jooq@1234 라는 패스워드를 생성하고 jooq 라는 schema(DB) 을 생성하였습니다. 이 모든 설정은 MySQL 와 관련된 것이기 때문에 생략하겠습니다.생성된 DB 에 다음과 같이 테스트용 테이블 하나와 두 개의 데이터를 입력하였습니다. CREATE TABLE `jooq`.`jooq_board` ( `seq` INT NOT NULL AUTO_INCREMENT, `author` VARCHAR(1..
제목을 좀 거창하게 지은 것 같긴 하네요. 그냥, 제가 JOOQ 을 써보게 된 계기를 담담하게 적어보려고 합니다. Java 을 오랜 기간동안 사용해서 개발하다보니, 당연히 Connection, PreparedStatement, ResultSet 을 이용해서 DB 에 질의(Query)을 하는 방법도 써왔고, iBatis 2.x ~ MyBatis 3 도 많이 사용했으며, Spring 의 JdbcTemplate 도 써본 적이 있습니다. 한 때 이슈가 된, 그리고 지지자들의 의견으론, 해외에선 이미 대세가 되었다는 ORM, 그 중에서도 Java 표준이 되어버린 JPA with Hibernate 을 이용해 게임 서버를 개발하여 출시도 해봤습니다. 여러 방식으로 RDBMS 에 질의를 했지만, 그래도 가장 나았던 건..
2019/01/29 - [Programming/Spring Boot 시작하기] - Spring Boot 에서 messages.properties 을 이용한 다국어 처리 (3) 쿠키로 관리되고 매개변수로 그 값을 변경하는 것이 완벽히 이해가 안된다면 간단한 예제 프로그램을 만들어 보는 것이 좋습니다. 각자 편한 대로 Spring Boot 프로젝트를 만듭니다. 이 때 Web 와 Thymeleaf 만 선택합니다.호출할 간단한 Controller 을 만듭니다. 앞 선 예제와 같이 MessageConfig 와 WebMvcConfig 도 만들어줍니다.다국어 출력을 위해 Thymeleaf 기반의 HTML 하나와 messages.properties, messages_ko_KR.properties, messages_en..
Spring Boot 에서 사용할 수 있는 다국어 처리(i18n)에 대해서 몇 가지만 이야기 하려고 합니다. Spring Boot 에서 다국어를 처리하는 가장 쉬운 방법은 src/main/resources 디렉토리에 messages.properties 파일을 이용하는 방법입니다.기본 제공할 언어에 대해서 messages.properties 에 정의하고 messages_ko.properties, messages_en.properties 와 같이 파일을 생성하면 해당 언어에 따른 메세지를 별도로 관리할 수 있습니다. 물론 messages_ko_KR.properties, messages_en_US.properteis 와 같이 언어 뿐만 아니라 국가에 따른 분류 파일도 추가로 설정할 수 있습니다.이를 쉽게 관리..
대부분 Spring 을 이용한 프로그래밍을 할 때에는 MVC, 요즘에는 WebFlux 을 많이 이용할 것이기 때문에 Spring Boot Starter 에서 제공하는 기능만으로도 시작 시 추가적인 동작이 필요하지 않는 경우가 대부분입니다. 하지만, 특정한 동작을 위해 서버 시작 시 어떠한 명령을 실행해야 한다던가, 반대로 종료 시 어떤 동작을 해야하는 경우는 분명 생길 수 있습니다. 가장 쉽게 생각해볼 수 있는 것은 생성자와 소멸자입니다. 그리고 jar 파일을 직접 실행할 때에는 main() method 내에 추가로 구현할 수도 있습니다. 하지만, Spring Boot 에서는 몇 가지 다른 방식으로 처리할 수 있습니다. 먼저 CommandLineRunner 나 ApplicationRunner 인터페이스를..
보통 많은 운영 환경에서 Web Server(정적인 파일 서비스)와 WAS 을 연동해서 서비스하는 경우가 많습니다. Tomcat 으로 서비스되고 있는 환경에서조차 내부에 경량 Apache HTTPd 가 내장되어 있기 때문에 별도의 Web Server 없이도 괜찮은 속도로 정적인 파일을 서비스 할 수 있지만, 몇 가지 이유(납득되는 것도 있고, 그렇지 않은 것들도 있지만) 때문에 여전히 기존 방식을 이용하는 곳도 많습니다. 개인적으로 생각할 때 가장 납득이 가는 경우는 "파일 업로드" 기능 때문입니다. 업로드된 파일을 다시 사용자가 내려받아야 할 경우라면 파일 원본 그 자체를 잘 보관하고 있다가 다른 영향 없이 다시 다운로드가 가능해야 합니다. 물론 파일 다운로드 시 권한 체크를 정교하게 한다거나 다운로드..
Java 가 Web 개발에서 두각을 나타내면서 WAS(Web Application Server) 라는 용어를 널리 사용하게 만들었습니다. 처음의 의도와 달리 WAS 을 지칭하는 의미는 점차 확대되었고, Java 에서는 Apache Tomcat(이하 Tomcat) 이라는 WAS 가 널리 보급되면서 온라인 상에 유통되는 대부분의 WAS 에 관한 것은 Tomcat 일 정도가 되었습니다. Tomcat 은 Java 로 만들어져 이식성이 좋고, Full Spec 의 J2EE 을 지원하진 않지만 Spring Framework 의 탄생으로 인해 J2SE Servlet 지원 만으로도 Enterprise 급의 프로그램을 개발할 수 있게 되면서 현재까지 널리 사용되고 있습니다. 그래서 Java 에서 Web Page 개발에 ..
Spring 에서 제공하는 RestTemplate 을 이용하면 다른 URL 을 호출하고 결과를 받아오는 코드를 쉽게 작성할 수 있습니다. 기존에는 Apache Commons 의 http 을 많이 이용했으나, Spring 에서 제공하는 RestTemplate 의 사용빈도가 점점 늘어나고 있습니다. 그런데, RestTemplate 을 기본 설정대로 사용하는 경우도 있지만, 추가적인 설정이 필요한 경우가 있습니다. 크게 두 가지라고 생각되는데, 하나는 HttpClient 설정을 별도로 하기 위한 것이고, 다른 하나는 로깅 때문입니다. 어떻게 이 두 가지를 적용하는지 알아보겠습니다. 먼저 설정을 하기 위해 @Configuration 애노테이션을 이용해 Class 을 하나 만듭니다. 그리고 그 안에 RestTem..
- Total
- Today
- Yesterday
- 페이징
- Spring MVC
- paging
- manjaro
- 도입기
- couchbase
- SI
- 프로젝트 규모
- java config
- Nas
- KDE
- 외장 WAS
- OracleJDK
- Phabricator
- Redmine
- messages.properties
- 엘지
- boot
- proxmox
- RestTemplate
- git
- 내장 WAS
- Spring
- jooq
- Spring Boot
- 시니어 프로그래머
- docker
- 클라우드플레어
- 워드프레스
- NoSQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |