Jakarta EE 8 - 过去、现在和未来
这篇文章是Arjan Tijms在Eclipse官方上面发表的文章,在文章中解释了Jakarta EE 8是做什么的,回顾了J2EE的历史以及演进到Jakarta的现在和展望的未来(我尽可能的将这篇文章翻译给大家)
原文链接:https://www.eclipse.org/community/eclipse_newsletter/2019/august/jakartaee8.php
FluentJPA - 为JPA提供类型安全流畅API的面向对象SQL查询
JPA是一种很棒的技术,它将数据库关系模型映射到Java面向对象上。它可以很容易地检索数据并持久化。但它缺乏执行高级查询的能力,大部分时候所有高级SQL功能都用难以维护的SQL硬编码来进行工作。
FluentJPA用了三种方式来解决这种问题,以下是部分示例代码
@Repository
public interface PersonRepository extends CrudRepository<Person, Long>, EntityManagerSupplier {
default List<Person> getAllByName(String name) {
FluentQuery query = FluentJPA.SQL((Person p) -> {
SELECT(p);
FROM(p);
WHERE(p.getName() == name);
});
return query.createQuery(getEntityManager(), Person.class).getResultList();
}
}
生成的SQL
SELECT t0.*
FROM PERSON_TABLE t0
WHERE (t0.name = ?)
FluentJPA.SQL((Part allParts) -> {
Part included_parts = subQuery((Part it,
Part parts,
Part subParts) -> {
// initial
SELECT(parts.getSubPart(), parts.getName());
FROM(parts);
WHERE(parts.getName() == "our_product");
UNION_ALL();
// recursive
SELECT(subParts.getSubPart(), subParts.getName());
// recurse
FROM(recurseOn(it), subParts);
WHERE(it.getSubPart() == subParts.getName());
});
WITH(RECURSIVE(included_parts));
DELETE().FROM(allParts);
WHERE(collect(included_parts, included_parts.getName()).contains(allParts.getName()));
});
GitHub:https://github.com/streamx-co/FluentJPA
GraalVM 19.2 - 新的工具
这是19.1之后的主要版本,带来了改进的配置文件引导优化,包含LLVM工具链,支持Java Flight Recorder的增强型VisualVM,新的Visual Studio Code插件预览,更好的原生图像峰值性能等等。 有关值得注意的更改的更完整列表,请查看发行说明。
文章地址:https://medium.com/graalvm/graalvm-19-2-new-tools-b78a70f54b06
Spring Cloud Gateway 请求头
这篇文章记录了作者如何在Spring Cloud Gateway设置请求头时,发生的怪异问题,并最终解决的历程。
文章地址:https://qua.name/antolius/spring-cloud-gateway-connection-header
Java编程方法论-Spring WebFlux 源码解读-Spring WebFlux中DispatcherHandler的设计思路解读
知秋大佬的《Java编程方法论-Spring WebFlux 源码解读》更新了
视频地址:https://www.bilibili.com/video/av64777900/?redirectFrom=h5
日报订阅地址:
- 微信公众号:月泉子