房屋室内装修设计,官网排名优化,个人工作室项目,服务器如何搭建php网站java jooqJava EE附带了自己的持久性API#xff1a;JPA。 当您想要将RDBMS实体#xff08;表/关系#xff09;映射到Java实体#xff08;类#xff09;时#xff0c;JPA最强大#xff0c;主要遵循1#xff1a;1映射策略。 其背后的思想是#xff0c;业务逻辑通常不像关… java jooq Java EE附带了自己的持久性APIJPA。 当您想要将RDBMS实体表/关系映射到Java实体类时JPA最强大主要遵循11映射策略。 其背后的思想是业务逻辑通常不像关系代数或SQL那样真正面向集合而是面向记录的这意味着将业务规则和业务逻辑应用于单个记录。 换句话说当SQL和关系代数与值元组有关时JPA与单个记录的身份和状态有关。 这就是JPA的亮点因为 寿命太短无法使用SQL编写CRUD 但是正如加文·金Gavin King经常说的 RDBMS不仅仅与CRUD有关 加文·金Gavin King在开始研究最流行的JPA实现Hibernate时就已经意识到了OLAP的炒作。 商业智能或当今称为数据科学的技术比简单的CRUD依赖更高级的功能-简单的JPA规范或其实现从未将其作为目标。 实际上您不必一定要执行OLAP才能从本机SQL中受益在更普通的OLTP环境中也会出现更简单的用例例如 报告中 批量和批量数据处理 查询复杂的业务规则 尽管JPA提供了JPQL和Criteria API它将帮助您表达查询中的一些复杂性但是您最终将受到这些语言和API提供的功能的限制正如Michael Simons最近在有趣的Criteria API与jOOQ比较中所记录的那样 。 因此所有JPA实现都提供了一种使用“本地SQL”查询数据库的方法。 在先前的博客文章中我们展示了如何利用jOOQ的类型安全DSL API通过JPA的本机查询API运行SQL查询 然后获取结果…… ……作为管理实体 …作为使用SqlResultSetMapping映射的DTO 在上述情况下jOOQ仅用作SQL查询构建器 而查询执行则留给JPA。 在Java EE中使用jOOQ进行所有数据库查询 记住jOOQ的理念 jOOQ本质上是类型安全的JDBC。 而已。 即使可以使用JPA执行本机SQL也不必这样做。 您可以直接在JDBC级别上进行操作这是JPA经常需要执行的操作例如在工作时… ……具有特定于供应商的数据类型 ……使用非平凡的存储过程 …与语句批处理 …带有可更新的游标 在应用程序服务器上运行应用程序时可以选择所需的功能其余部分使用专有的API例如在JDBC之上运行的jOOQ。 例如您可以使用 用于会话和范围管理的EJB CDI用于依赖项注入 jOOQ与您的数据库交互 您也可以将JTA添加到堆栈中-为简单起见我们暂时将其跳过 该过程很简单只需使用CDI将javax.sql.DataSource注入到会话bean中即可 Stateless
public class LibraryEJB {Resource(lookupjava:data-source-configuration)private DataSource ds;
} …并开始使用JDBC进行操作 public ListAuthor fetchAuthors()
throws SQLException {ListAuthor result new ArrayList();// Get a Connection from the injected DataSourcetry(Connection con ds.getConnection();PreparedStatement stmt con.prepareStatement(SELECT * FROM AUTHOR ORDER BY ID);ResultSet rs stmt.executeQuery()) {result.add(new Author(rs.getInt(ID),rs.getString(FIRST_NAME),rs.getString(LAST_NAME)));}return result;
} …或使用jOOQ public ResultAuthorRecord fetchAuthors() {// Pass the injected DataSource to jOOQreturn DSL.using(ds, H2).selectFrom(AUTHOR).orderBy(AUTHOR.ID).fetch();
} 请注意jOOQ 默认情况下如何将所有结果急切地获取到内存中 并急切地关闭诸如JDBC Connection PreparedStatement和ResultSet类的资源这样就无需您自己去处理资源管理的麻烦。 再次 jOOQ本质上是类型安全的JDBC。 而已。 出于各种原因JDBC一直是Java EE应用程序的重要组成部分包括对供应商特定功能的访问。 jOOQ在JDBC的基础上增加了编译时类型的安全性。 而已。 与JDBC兼容的任何东西都可以与jOOQ兼容。 特别是无论您做出何种选择jOOQ都不会干扰您的事务或会话模型。 jOOQ所需要的只是一个JDBC Connection或DataSource 。 在JBoss WildFly中运行示例 例如可以从GitHub检出以上示例然后直接在WildFly中运行-或在其他Java EE应用程序服务器中进行少量改动即可 https : //github.com/jOOQ/jOOQ/tree/master/jOOQ-examples / jOOQ-javaee-example 该示例是在与Arun Gupta举行的网络研讨会中为WildFly创建的。 网络研讨会回答以下问题 什么是jOOQ 有JDBC和JPA时为什么要使用JOOQ 它如何与Java EE应用程序配合 它使用底层的JPA持久性提供程序还是其他一些连接 通过JPA的利弊 纯冬眠 它的缩放程度如何 在Java EE应用程序中显示代码示例 jOOQ用于基于CRUD或领域丰富的应用程序 最终如何将jOOQ中的所有工作整合到JPA中并进行标准化 还是更多的JDBC 完整的网络研讨会可以在YouTube上找到这里 翻译自: https://www.javacodegeeks.com/2015/10/a-beginners-guide-to-using-java-ee-with-jooq.htmljava jooq