当前位置: 首页 > news >正文

能上国外网站的免费dnswordpress 大发

能上国外网站的免费dns,wordpress 大发,云南网站设计定制,响水县住房和城乡建设局网站jooq映射原理JOOQ是一个简洁的框架#xff0c;它解决了我在使用高级动态过滤查询时遇到的一个长期问题。 尽管Hibernate和JPA附带了一个有用的Criteria API#xff08;我已经使用了很长一段时间#xff09;#xff0c;但是您可以使用这些API进行操作有一些可以理解的限制。… jooq映射原理 JOOQ是一个简洁的框架它解决了我在使用高级动态过滤查询时遇到的一个长期问题。 尽管Hibernate和JPA附带了一个有用的Criteria API我已经使用了很长一段时间但是您可以使用这些API进行操作有一些可以理解的限制。 例如您不能超出简单SQL操作例如JOINSNESTED SLECTSAGGREGATION并执行类似的操作 窗口函数 用户定义的函数或简单的排序等 。 JOOQ不想和Hibernate竞争但我觉得它可以完成它。 我一直在将Hibernate用于数据层的WRITE部分因此使用它的名称或JPA中的“ Persisting”部分。 对于简单到中等复杂的查询Hibernate会尽力而为但是我不必仅依靠它来进行所有查询是吗 查询属性还有一个缺点这是因为有时为了仅针对少数用例进行查询有时必须向域模型添加关联。 因此由于我不怕编写本机查询因此可以以DSL方式和独立于供应商的方式来执行此操作。 尽管可以使用基于字符串的列命名但JOOQ通过使用类型安全的元数据提供了一种更好的方法因此我们要做的第一件事是为数据库架构生成表映射。 由于我已经有了JPA模型因此可以从中生成数据库模式DDL为此我们可以使用hibernatetool ant任务。 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-antrun-plugin/artifactIdexecutionsexecutionidgenerate-test-sql-scripts/idphasegenerate-test-resources/phasegoalsgoalrun/goal/goalsconfigurationtasksproperty namemaven_test_classpath refidmaven.test.classpath/path idhibernate_tools_pathpathelement path${maven_test_classpath}//pathproperty namehibernate_tools_classpath refidhibernate_tools_path/taskdef namehibernatetoolclassnameorg.hibernate.tool.ant.HibernateToolTask/mkdir dir${project.build.directory}/test-classes/hsqldb/hibernatetool destdir${project.build.directory}/test-classes/hsqldbclasspath refidhibernate_tools_path/jpaconfiguration persistenceunittestPersistenceUnitpropertyfilesrc/test/resources/META-INF/spring/jdbc.properties/hbm2ddl dropfalse createtrue exportfalseoutputfilenamecreate_db.sqldelimiter; formattrue/hbm2ddl droptrue createfalse exportfalseoutputfilenamedrop_db.sqldelimiter; formattrue//hibernatetool/tasks/configuration/execution/executionsdependenciesdependencygroupIdorg.hibernate/groupIdartifactIdhibernate-entitymanager/artifactIdversion${hibernate.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-tools/artifactIdversion${hibernate.tools.version}/versionexclusionsexclusiongroupIdorg.hibernate/groupIdartifactIdhibernate-commons-annotations/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-simple/artifactIdversion${slf4j.version}/version/dependency/dependencies /plugin 这将生成一个“ create_db.sql”数据库DDL脚本我们将使用“ maven.sql.plugin”将其用于填充基于文件的临时HSQLDB。 我本来希望使用内存中的HSQLDB但不幸的是它没有保存插件执行之间的状态。 plugingroupIdorg.codehaus.mojo/groupIdartifactIdsql-maven-plugin/artifactIddependenciesdependencygroupIdorg.hsqldb/groupIdartifactIdhsqldb/artifactIdversion${hsqldb.version}/version/dependency/dependenciesconfigurationdriverorg.hsqldb.jdbc.JDBCDriver/driverurljdbc:hsqldb:file:${project.build.directory}/hsqldb/db;shutdowntrue/urlusernamesa/usernamepassword/passwordautocommittrue/autocommitsettingsKeyhsql-db-test/settingsKey/configurationexecutionsexecutionidcreate-test-compile-data/idphaseprocess-test-resources/phaseinheritedtrue/inheritedgoalsgoalexecute/goal/goalsconfigurationorderFileascending/orderFilefilesetbasedir${project.build.directory}/test-classes/hsqldb//basedirincludesincludecreate_db.sql/include/includes/filesetautocommittrue/autocommit/configuration/execution/executions /plugin 因此现在用我们的JPA生成的模式填充了HSQLDB我们最终可以调用JOOQ代码生成来构建表映射。 plugingroupIdorg.jooq/groupIdartifactIdjooq-codegen-maven/artifactIdexecutionsexecutionphaseprocess-test-classes/phasegoalsgoalgenerate/goal/goals/execution/executionsdependenciesdependencygroupIdorg.hsqldb/groupIdartifactIdhsqldb/artifactIdversion${hsqldb.version}/version/dependency/dependenciesconfigurationjdbcdriverorg.hsqldb.jdbc.JDBCDriver/driverurljdbc:hsqldb:file:${project.build.directory}/hsqldb/db/urlusersa/userpassword/password/jdbcgeneratornameorg.jooq.util.JavaGenerator/namedatabasenameorg.jooq.util.hsqldb.HSQLDBDatabase/nameincludes.*/includesexcludes/excludesinputSchemaPUBLIC/inputSchema/databasegenerate/generatetargetpackageNamevladmihalcea.jooq.schema/packageNamedirectorytarget/generated-sources/jooq/directory/target/generator/configuration /plugin 通过maven运行我们生成了表映射因此让我们将Image类的JPA元模型与关联的JOOQ表映射进行比较 JPA元模型如下所示 StaticMetamodel(Image.class) public abstract class Image_ {public static volatile SingularAttributeImage, Product product;public static volatile SingularAttributeImage, Long id;public static volatile SetAttributeImage, Version versions;public static volatile SingularAttributeImage, Integer index;public static volatile SingularAttributeImage, String name;} 和JOOQ表映射 javax.annotation.Generated(value { http://www.jooq.org, 3.2.0 },comments This class is generated by jOOQ) java.lang.SuppressWarnings({ all, unchecked, rawtypes }) public class Image extends org.jooq.impl.TableImplvladmihalcea.jooq.schema.tables.records.ImageRecord {private static final long serialVersionUID 1596930978;/*** The singleton instance of codePUBLIC.IMAGE/code*/public static final vladmihalcea.jooq.schema.tables.Image IMAGE new vladmihalcea.jooq.schema.tables.Image();/*** The class holding records for this type*/Overridepublic java.lang.Classvladmihalcea.jooq.schema.tables.records.ImageRecord getRecordType() {return vladmihalcea.jooq.schema.tables.records.ImageRecord.class;}/*** The column codePUBLIC.IMAGE.ID/code. */public final org.jooq.TableFieldvladmihalcea.jooq.schema.tables.records.ImageRecord, java.lang.Long ID createField(ID, org.jooq.impl.SQLDataType.BIGINT.nullable(false), this);/*** The column codePUBLIC.IMAGE.INDEX/code. */public final org.jooq.TableFieldvladmihalcea.jooq.schema.tables.records.ImageRecord, java.lang.Integer INDEX createField(INDEX, org.jooq.impl.SQLDataType.INTEGER, this);/*** The column codePUBLIC.IMAGE.NAME/code. */public final org.jooq.TableFieldvladmihalcea.jooq.schema.tables.records.ImageRecord, java.lang.String NAME createField(NAME, org.jooq.impl.SQLDataType.VARCHAR.length(255), this);/*** The column codePUBLIC.IMAGE.PRODUCT_ID/code. */public final org.jooq.TableFieldvladmihalcea.jooq.schema.tables.records.ImageRecord, java.lang.Long PRODUCT_ID createField(PRODUCT_ID, org.jooq.impl.SQLDataType.BIGINT, this);/*** Create a codePUBLIC.IMAGE/code table reference*/public Image() {super(IMAGE, vladmihalcea.jooq.schema.Public.PUBLIC);}/*** Create an aliased codePUBLIC.IMAGE/code table reference*/public Image(java.lang.String alias) {super(alias, vladmihalcea.jooq.schema.Public.PUBLIC, vladmihalcea.jooq.schema.tables.Image.IMAGE);}/*** {inheritDoc}*/Overridepublic org.jooq.Identityvladmihalcea.jooq.schema.tables.records.ImageRecord, java.lang.Long getIdentity() {return vladmihalcea.jooq.schema.Keys.IDENTITY_IMAGE;}/*** {inheritDoc}*/Overridepublic org.jooq.UniqueKeyvladmihalcea.jooq.schema.tables.records.ImageRecord getPrimaryKey() {return vladmihalcea.jooq.schema.Keys.SYS_PK_10059;}/*** {inheritDoc}*/Overridepublic java.util.Listorg.jooq.UniqueKeyvladmihalcea.jooq.schema.tables.records.ImageRecord getKeys() {return java.util.Arrays.org.jooq.UniqueKeyvladmihalcea.jooq.schema.tables.records.ImageRecordasList(vladmihalcea.jooq.schema.Keys.SYS_PK_10059, vladmihalcea.jooq.schema.Keys.UK_OQBG3YIU5I1E17SL0FEAWT8PE);}/*** {inheritDoc}*/Overridepublic java.util.Listorg.jooq.ForeignKeyvladmihalcea.jooq.schema.tables.records.ImageRecord, ? getReferences() {return java.util.Arrays.org.jooq.ForeignKeyvladmihalcea.jooq.schema.tables.records.ImageRecord, ?asList(vladmihalcea.jooq.schema.Keys.FK_9W522RC4D0KFDKQ390IHV92GB);}/*** {inheritDoc}*/Overridepublic vladmihalcea.jooq.schema.tables.Image as(java.lang.String alias) {return new vladmihalcea.jooq.schema.tables.Image(alias);} } 现在我们还需要使Maven意识到我们新生成的JOOQ元数据类以便它可以在下一个测试编译阶段对其进行编译。 plugingroupIdorg.codehaus.mojo/groupIdartifactIdbuild-helper-maven-plugin/artifactIdexecutionsexecutionidadd-source/idphaseprocess-test-sources/phasegoalsgoaladd-test-source/goal/goalsconfigurationsourcessource${project.build.directory}/generated-sources/java/source/sources/configuration/execution/executions /plugin 现在我可以开始玩JOOQ了。 让我们将DSLContext添加到我们的Spring应用程序上下文中 bean idjooqContext classorg.jooq.impl.DSL factory-methodusingconstructor-arg refdataSource/constructor-arg value#{T(org.jooq.SQLDialect).HSQLDB}/ /bean 我们将编写一个测试来检查一切是否正常 private ListImageProductDTO getImageProductDTOs_JOOQ() {return transactionTemplate.execute(new TransactionCallbackListImageProductDTO() {Overridepublic ListImageProductDTO doInTransaction(TransactionStatus transactionStatus) {return jooqContext.select(IMAGE.NAME, PRODUCT.NAME).from(IMAGE).join(PRODUCT).on(IMAGE.PRODUCT_ID.equal(PRODUCT.ID)).where(PRODUCT.NAME.likeIgnoreCase(%tv%)).and(IMAGE.INDEX.greaterThan(0)).orderBy(IMAGE.NAME.asc()).fetch().into(ImageProductDTO.class);}}); } 生成以下SQL SELECT PUBLIC.image.name,PUBLIC.product.name FROM PUBLIC.imageJOIN PUBLIC.productON PUBLIC.image.product_id PUBLIC.product.id WHERE ( Lower(PUBLIC.product.name) LIKE Lower(%tv%)AND PUBLIC.image.index 0 ) ORDER BY PUBLIC.image.name ASC 这是我第一次使用JOOQ并且不需要花太多时间浏览文档并在Hibernate Facts编码示例中进行所有设置。 JOOQ查询的构建感觉很自然就像编写本机SQL代码一样因此我不必真正学习API就能知道如何使用它。 我将很自豪地将其添加到我的Java Data Toolbox中。 这个编码示例将JOOQ映射生成到test-classes文件夹中因此您不能在main / java源文件中使用它们。 这可以解决但是需要通过将模型类移动到单独的Maven模块中来重构现有解决方案。 您可以在此单独的模块中生成JOOQ模式在打包之前您可以在其中将模式类从测试类移至classes文件夹。 然后您将必须包含这个新模块通常在其中使用JOOQ模式。 参考 JOOQ事实从JPA注释到我们的JCG合作伙伴 Vlad Mihalcea在Vlad Mihalcea博客博客上的JOOQ 表映射 。 翻译自: https://www.javacodegeeks.com/2013/12/jooq-facts-from-jpa-annotations-to-jooq-table-mappings.htmljooq映射原理
http://www.pierceye.com/news/964116/

相关文章:

  • 企业网站建设需要哪些费用做算法的网站
  • 很大气的网站 营销js特效网站展示
  • 南宁建站程序成都新线加网站建设
  • 用微软雅黑做网站可以吗wordpress游客发帖插件
  • 网站备案怎样提交管局网页电商设计
  • 郑州华恩科技做网站怎么样网络竞价推广托管公司
  • 都江堰住房和城乡建设厅网站哈尔滨网站建设方案维护
  • 九江网站网站建设原始传奇经典复古
  • 宽屏营销型网站源码安微省住房和城乡建设厅网站
  • 做暖视频网站免费搜索引擎营销的模式有
  • 网站建设需要的条件榆林北京网站建设
  • 分类信息网站推广的意义wordpress安装教程wamp
  • 免费自助建站全系统建设银行永泰支行网站
  • 建网络商城网站如何开公司做网站
  • 长春网站制作色块网站设计
  • 通明建设网站网站怎么黑
  • 学校网站怎么查询录取html5浏览器
  • 网站开发 技术问题页面模版 公众号
  • 宜阳县网站建设网络运营者应当为()
  • 做网站的人能看到浏览的人的信息吗青岛市最大的网络公司是哪里
  • 网站建设 千助黄冈网站推广软件ios
  • 网站制作视频教程全报价单模板表格
  • 包头市做网站哪个wordpress nginx伪静态规则
  • 深圳建网站哪家好专业网站建设服务包括
  • 做静态头像网站网站做百度竞价利于百度优化
  • 网站建设属于税收建立网站后怎样收费
  • 婚礼礼网站如何做的云南推广公司
  • 模板建站流程seo优化推广
  • 龙岗网络推广深圳网站建设我的世界的头怎么做视频网站
  • 高明网站建设首选公司深圳市建设安监站网站