{"id":41585,"date":"2018-12-11T09:05:53","date_gmt":"2018-12-11T01:05:53","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=46749"},"modified":"2018-12-11T09:05:53","modified_gmt":"2018-12-11T01:05:53","slug":"java-weekly-issue-259","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2018\/12\/11\/java-weekly-issue-259\/","title":{"rendered":"Java Weekly, Issue 259"},"content":{"rendered":"<p><strong>Here we go\u2026<\/strong><\/p>\n<h2><strong>1. Spring and Java<\/strong><\/h2>\n<h4><a href=\"https:\/\/spring.io\/blog\/2018\/12\/07\/reactive-programming-and-relational-databases\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Reactive Programming and Relational Databases<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<p>A brief look at <strong>why R2DBC may be winning the race<\/strong> to integrate the Reactive Programming model with RDBMS stacks. Very exciting.<\/p>\n<h4><a href=\"http:\/\/dolszewski.com\/java\/java-object-equals-contract\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0What is Java object equals contract?<\/strong><\/a> [<span style=\"color: #993300;\">dolszewski.com<\/span>]<\/h4>\n<p>A quick write-up describing <strong>what can happen when our implementation fails to honor this basic yet often misunderstood Java contract<\/strong>.<\/p>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/micronaut-tracing-security-serverless\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Micronaut Tutorial: Part 2: Easy Distributed Tracing, JWT Security and AWS Lambda Deployment<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<p>The second installment in this series takes a deeper dive into <strong>advanced solutions using the JVM-based Micronaut framework<\/strong>.<\/p>\n<h4><a href=\"https:\/\/vladmihalcea.com\/hibernate-event-listeners\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0How to intercept entity changes with Hibernate event listeners<\/strong><\/a> [<span style=\"color: #993300;\">vladmihalcea.com<\/span>]<\/h4>\n<p>And a solid piece detailing <strong>how to replicate entity changes to other database tables<\/strong> using the event listener mechanism. Very cool.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li><a href=\"https:\/\/www.tomitribe.com\/blog\/jms-3-0-get-involved\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0JMS 3.0: Get Involved!<\/strong><\/a> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.jooq.org\/2018\/12\/07\/how-to-unit-test-your-annotation-processor-using-joor\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0How to Unit Test Your Annotation Processor using jOOR<\/strong><\/a> [<span style=\"color: #993300;\">blog.jooq.org<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"http:\/\/marxsoftware.blogspot.com\/2018\/12\/jdk12-dropping-raw-string-literals.html\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Dropping Raw String Literals from JDK 12<\/strong><\/a> [<span style=\"color: #993300;\">marxsoftware.blogspot.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/debezium.io\/blog\/2018\/12\/05\/automating-cache-invalidation-with-change-data-capture\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Automating Cache Invalidation With Change Data Capture<\/strong><\/a> [<span style=\"color: #993300;\">vladmihalcea.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Webinars and presentations:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/test-spring-apps-services\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Bootiful Testing<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2018\/12\/12\/spring-tips-bootiful-google-cloud-platform\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Tips: Bootiful Google Cloud Platform<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/containers-net\"  rel=\"noopener\">&gt;&gt;\u00a0Containers &#8211; What Are They Good For?<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-sleuth-brave\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0How Sleuth Bravely Cracked the Case of &#8220;Too Much to Code&#8221;<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-cloud-pipelines-spinnaker\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Zero to Multi-Cloud<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/handling-error-circuit-breaker\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Expect the Unexpected: How to Handle Errors Gracefully<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/airbnb-soa-migration\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0The Great Migration: from Monolith to Service-Oriented<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/software-testing-deep-learning\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0AI for Software Testing with Deep Learning: Is It Possible?<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/ai-primer-enterprise\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0AI, the Enterprise, and You: A Primer and Post-Mortem<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/netflix-devops\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Full Cycle Developers @Netflix<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/podcasts\/improving-developer-experience-netflix\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Sangeeta Narayanan of Netflix on Improving the Developer Experience<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<p><strong>Time to upgrade:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2018\/12\/05\/spring-tools-4-0-2-released\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Tools 4.0.2 released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2018\/12\/06\/spring-io-platform-cairo-sr6\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring IO Platform Cairo-SR6<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2018\/12\/10\/spring-rest-docs-2-0-3-release\"  rel=\"noopener\">&gt;&gt;\u00a0Spring REST Docs 2.0.3.RELEASE<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">spring.io<\/span>] and\u00a0<strong><a href=\"https:\/\/spring.io\/blog\/2018\/12\/10\/spring-rest-docs-1-2-6-release\"  rel=\"noopener\">&gt;&gt;\u00a0Spring REST Docs 1.2.6.RELEASE<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2018\/12\/github-desktop-1.5-released\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0GitHub Desktop 1.5 Simplifies Merge Conflict Resolution<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"http:\/\/in.relation.to\/2018\/12\/06\/hibernate-orm-600-alpha1-out\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Hibernate ORM 6.0.0.Alpha1 released<\/strong><\/a> [<span style=\"color: #993300;\">in.relation.to<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2018\/12\/intellij-idea-2018.3\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0IntelliJ IDEA 2018.3 Brings Support for the Upcoming Java 12, Spring Boot Enhancements and More<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>2. Technical and Musings<\/strong><\/h2>\n<h4><a href=\"https:\/\/blog.frankel.ch\/limits-programming-interface\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Limits of programming by interface<\/strong><\/a> [<span style=\"color: #993300;\">blog.frankel.ch<\/span>]<\/h4>\n<p>A reminder that <strong>strict adherence to this basic programming principle isn&#8217;t always the best option<\/strong>.<\/p>\n<h4><a href=\"https:\/\/daedtech.com\/company-no-office-politics\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Is It Possible to Have a Company with No Office Politics?<\/strong><\/a> [<span style=\"color: #993300;\">daedtech.com<\/span>]<\/h4>\n<p>While office politics are unavoidable, there are pockets of healthy office politics that are worth seeking out.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2018\/12\/continuous-infrastructure-ansible-molecule-travisci\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Continuous Infrastructure with Ansible, Molecule &amp; TravisCI<\/strong><\/a> [<span style=\"color: #993300;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/articles\/agile-developing-industrial-machinery\"  rel=\"noopener\">&gt;&gt;\u00a0Applying Agile for Developing Industrial Machinery<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.mozilla.org\/blog\/2018\/12\/06\/goodbye-edge\/\"  rel=\"noopener\">&gt;&gt;\u00a0Goodbye, EdgeHTML<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.mnot.net\/blog\/2018\/12\/06\/predictions\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Eight #aabill Predictions<\/strong><\/a> [<span style=\"color: #993300;\">mnot.net<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>3. Comics<\/strong><\/h2>\n<p>And my favorite Dilberts of the week:<\/p>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2018-12-12\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Write Your Own Performance Review<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2018-12-08\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Horse Blinders for the Open Office Plan<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2018-12-06\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Jargon<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2><strong>4. Pick of the Week<\/strong><\/h2>\n<h4><strong><a href=\"https:\/\/sivers.org\/subtract\">&gt;&gt;\u00a0Subtract<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">sivers.org<\/span>]<\/h4>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>From custom entity listeners in Hibernate, to (finally) some interesting persistence reactive support. A good week.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-259\" title=\"Java Weekly, Issue 259\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2018\/12\/11\/java-weekly-issue-259\/\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"slim_seo":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2,7],"tags":[398,402,397,414,413,410,409,407,408,11,406,399,400,394,318,375,558,560,555,561,553,554,562,524,10,401,396,381,403,412,411,395,405,404,457,454,316],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7prtj-aOJ","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/41585"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/comments?post=41585"}],"version-history":[{"count":1,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/41585\/revisions"}],"predecessor-version":[{"id":41586,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/41585\/revisions\/41586"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=41585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=41585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=41585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}