사용자 도구

사이트 도구


java:jooq

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:jooq [2017/09/20 14:55]
kwon37xi
java:jooq [2018/11/07 13:20] (현재)
kwon37xi [Spring AOP 사용시 성능 저하]
줄 3: 줄 3:
   * 정적 타입 체킹을 하면서 SQL 의 거의 모든 문법을 사용할 수 있도록 해주는 SQL Query 중심의 프레임워크. ORM은 아니다.   * 정적 타입 체킹을 하면서 SQL 의 거의 모든 문법을 사용할 수 있도록 해주는 SQL Query 중심의 프레임워크. ORM은 아니다.
   * [[java:jpa|JPA]]/[[java:hibernate|Hibernate]]를 ORM으로 사용하고 복잡한 쿼리인데 JPA/Hibernate가 못해주는 부분을 jOOQ에 맡기는 방식으로 모자람을 채워주면 좋다.   * [[java:jpa|JPA]]/[[java:hibernate|Hibernate]]를 ORM으로 사용하고 복잡한 쿼리인데 JPA/Hibernate가 못해주는 부분을 jOOQ에 맡기는 방식으로 모자람을 채워주면 좋다.
 +  * [[gradle:jooq_codegen|jOOQ gradle code generation]]
  
 ===== jOOQ With Spring ===== ===== jOOQ With Spring =====
 +  * [[https://www.baeldung.com/spring-boot-support-for-jooq|Spring Boot Support for jOOQ | Baeldung]]
   * [[http://www.javacodegeeks.com/?p=20557|Using jOOQ with Spring: Configuration]]   * [[http://www.javacodegeeks.com/?p=20557|Using jOOQ with Spring: Configuration]]
 +  * [[https://github.com/jOOQ/jOOQ/tree/master/jOOQ-examples/jOOQ-spring-example|jOOQ Spring Example]], [[http://www.baeldung.com/jooq-with-spring|jOOQ with Spring]]
 +  * [[https://github.com/jOOQ/jOOQ/tree/master/jOOQ-examples/jOOQ-spring-guice-example|jOOQ Spring/Guice Example]]
 +
 +===== Query Logging =====
 +  * ''org.jooq.tools.JooqLogger'' 에 대해 ''DEBUG'' 레벨로 로그를 남기면 jooq 가 생성한 쿼리와 바인딩, 결과를 로그로 볼 수 있다.
 +
 +===== Type Converting =====
 +  * [[https://blog.jooq.org/2017/01/06/how-to-write-a-quick-and-dirty-converter-in-jooq/|How to Write a Quick and Dirty Converter in jOOQ]]
 +  * 소스 생성시 3.9 버전 이후부터 ''javaTimestamp = true'' 옵션으로 시간 컬럼을 Java 8 JSR-310 API로 생성할 수 있다.<code groovy>
 +generate([:]) {
 +  // ...
 +  javaTimeTypes true
 +}
 +</code>
 +
 +===== Spring AOP 사용시 성능 저하 =====
 +  * [[https://github.com/jOOQ/jOOQ/issues/5902|jOOQ,spring-boot and aop. · Issue #5902 · jOOQ/jOOQ]]
 +  * 결론, ''execution'' 포인트컷 사용이 ''DefaultDSLContext''의 모든 메소드를 적용하는 현상.
 +  * ''within''으로 변경시 문제 없음. 혹은, ''DefaultDSLContext''를 포인트컷에서 제외시킬 것.
 +
 +> For some reason, the method couldMatchJoinPointsInType of org.aspectj.weaver.internal.tools.PointcutExpressionImpl return true when using a pointcut with execution, and because of this every method of DefaultDSLContext is checked to see if the pointcut can be applied to the methods.
 +> Using ''within'' instead of ''execution'' solves the problem.
  
 ===== 참조 ===== ===== 참조 =====
줄 12: 줄 36:
   * [[http://blog.jooq.org/tag/freemarker/|Freemarker | Java, SQL and jOOQ.]]   * [[http://blog.jooq.org/tag/freemarker/|Freemarker | Java, SQL and jOOQ.]]
   * [[https://blog.jooq.org/2017/08/24/jooq-3-10-supports-jpa-attributeconverter/|jOOQ 3.10 Supports JPA AttributeConverter – Java, SQL and jOOQ.]]   * [[https://blog.jooq.org/2017/08/24/jooq-3-10-supports-jpa-attributeconverter/|jOOQ 3.10 Supports JPA AttributeConverter – Java, SQL and jOOQ.]]
 +  * [[https://blog.jooq.org/2018/01/12/top-5-hidden-jooq-features/|Top 5 Hidden jOOQ Features – Java, SQL and jOOQ.]]
 +  * [[https://blog.jooq.org/2018/03/13/top-10-sql-dialect-emulations-implemented-in-jooq/|Top 10 SQL Dialect Emulations Implemented in jOOQ – Java, SQL and jOOQ.]]
 +  * [[https://www.petrikainulainen.net/programming/jooq/jooq-tips-implementing-a-read-only-one-to-many-relationship/|jOOQ Tips: Implementing a Read-Only One-to-Many Relationship]]
java/jooq.1505888755.txt.gz · 마지막으로 수정됨: 2017/09/20 14:55 저자 kwon37xi