2019/03/21 - [Programming/JOOQ] - [JOOQ-05] 객체(Object)에 질의 결과 저장하기 JOOQ 는 Java 코드를 SQL 로 에뮬레이트 해주는 DSL 의 성격을 가지고 있습니다. 그래서 C# 의 LINQ 와 유사하게 코드를 작성할 수 있고, 작성된 코드의 문법적 문제를 어느 정도 예방할 수도 있습니다. 그 의미를 알기 위해 아래와 같은 간단한 질의를 Java 코드로 변경해보겠습니다. SELECT * FROM author a JOIN book b ON a.id = b.author_id WHERE a.year_of_birth > 1920 AND a.first_name = 'Paulo' ORDER BY b.title 위 질의는 다음과 같이 작성될 수 있습니다. Author a..
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/03/05 - [Programming/JOOQ] - [JOOQ-03] 테스트 DB 을 생성하고 JOOQ 객체 생성하기 좀 더 복잡한 질의를 실행해보겠습니다.저의 경우 JOOQ 으로 개발할 때에는 먼저 DBMS 에 직접 SQL 로 명령을 실행해본 뒤에 실제 본문을 작성해봅니다. JOOQ 는 Type Safe 등을 지원하긴 하지만, 이것이 올바른 질의인지는 판단하지 않기 때문입니다. 다음은 실제 질의해 본 것입니다. SELECT author.first_name, author.last_name, COUNT(*) FROM author JOIN book ON author.id = book.author_id JOIN `language` ON book.language_id = `language`.id WHE..
2019/03/01 - [Programming/JOOQ] - [JOOQ-02] JOOQ 에 대해서 좀 더 알아보기 앞선 글에서 아주 간단한 테스트를 위해 하나의 Table 을 생성하고 JOOQ 객체 생성 없이 사용하는 예제를 만들어봤습니다. 하지만, JOOQ 객체 없이 JOOQ 을 쓴다는건 생각하기 힘든 일입니다. 왜냐하면, String 으로 된 "board.seq" 와 같은 것으로 오타 방지 등을 할 수 없기 때문입니다.반대로 JPA 와 달리 사용자가 POJO 을 만들고 이를 바탕으로 DB 을 자동으로 생성해주는 것 또한 바람직하지 않다고 생각합니다. ORM 을 많이 사용하게 되면서 Java Object(POJO) 을 기반으로 데이터 구조를 설계하는 문화도 꽤나 정착되었지만, 여전히 기획을 바탕으로 데..
2019/02/28 - [Programming/JOOQ] - [JOOQ-01] JOOQ 맛보기 Web 프로그래밍이 perl 을 앞세워 CGI 의 영역에서 서비스 되던 시기에는 RDBMS 을 이용해서 데이터를 처리하기 보다는 예전처럼 서버의 파일시스템에 Text 파일을 만들어 데이터를 다루는게 더 일반적인 시기가 있었습니다. 하지만, MySQL 을 위시한 무료 RDBMS 가 성능을 높여가고 Web 프로그래밍의 구성 방법이 바뀌어가면서 Web 프로그래밍 시 RDBMS 가 항상 포함되는건 당연한 것처럼 여겨지는 시대가 되었습니다. 현재에는 RDBMS 의 한계를 극복하기 위해 NoSQL 제품들이 나오고 있지만, 아직까진 RDBMS 의 아성은 굳건하기만 합니다. Web 의 유행으로 인해 대중화된 RDBMS 은 더..
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/02/22 - [Programming/Java] - Undertow 와 Tomcat 의 간단한 비교 내장(Embedded) Tomcat 이 널리 사용되고 있진 않기 때문인지 기존에 사용하던 별도 설치를 통한 Tomcat(외장 Tomcat)이 내장 Tomcat 보다 성능이 떨어진다고 주장하는 사람과 그렇지 않다는 사람들이 여전히 각각 존재합니다. 진실은 무엇일까요? Tomcat 개발자들이 성능은 동일하다고 밝혔다는 것이 널리 알려지긴 했지만 제가 원문을 찾기도 귀찮고 해서 그냥 부하 테스트를 진행했습니다. 이전 글(상단 링크)의 Tomcat 이 내장 Tomcat 이기 때문에 Tomcat WAS 을 별도로 내려받아 이전 글에서 이용한 war 파일을 ROOT.war 로 이름을 바꾼 뒤 %CATALIN..
2019/01/23 - [Programming/Java] - Spring Boot 공식 지원 내장 WAS 인 Undertow 을 씁시다. 이전에 Spring Boot 에서 Embedded Tomcat 대신에 Undertow 을 사용하자고 글을 작성한 적이 있습니다. 글의 내용에서 Undertow 의 성능이 더 뛰어나다는 것을 근거로 삼았는데, 저의 경험을 이야기 한 것일 뿐이었기에 실제 간단한 코드를 이용해 테스트를 진행해 보려고 합니다. Spring Boot 프로젝트를 2 개(tomcat-pingpong, undertow-pingpong) 생성한다. Java 11, war, Web 을 선택해서 생성한다.undertow-pingpong 에는 pom.xml 에서 Tomcat 을 제외하고 Undertow 을..
새로 PC 을 지급받았는데, Hyper-V 을 설치했는데도 제대로 연결이 안되는 문제가 발생하였습니다.증상은,VT-x 활성화, VT-d 비활성화 등으로 모든 체크를 통과함Windows 구성 요소에서, 혹은 PowerShell 에서 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All 명령으로 설치재시작 후 Hyper-V 빨리 만들기, Hyper-V 관리자 모두 정상 동작 하지 않음vmms 프로세스 정상 시작, 종료 시 Timeout, 강제 종료 후 시작하면 정상 시작이었습니다.해결하기 위해 아래와 같은 명령도 적용했지만, 해결되지 않았습니다.Disable-WindowsOptionalFeature -Online -FeatureN..
- Total
- Today
- Yesterday
- java config
- paging
- boot
- Redmine
- NoSQL
- messages.properties
- 엘지
- Spring MVC
- 시니어 프로그래머
- 프로젝트 규모
- Spring Boot
- 외장 WAS
- KDE
- SI
- couchbase
- git
- Phabricator
- 워드프레스
- RestTemplate
- Nas
- proxmox
- 도입기
- 내장 WAS
- 페이징
- docker
- 클라우드플레어
- manjaro
- jooq
- Spring
- OracleJDK
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |