<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java on SivaLabs</title><link>https://www.sivalabs.in/categories/java/</link><description>Recent content in Java on SivaLabs</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 10 Nov 2026 12:11:30 +0530</lastBuildDate><atom:link href="https://www.sivalabs.in/categories/java/rss.xml" rel="self" type="application/rss+xml"/><item><title>Should I use a framework or libraries?</title><link>https://www.sivalabs.in/blog/should-i-use-framework-or-libraries/</link><pubDate>Mon, 22 Jan 2024 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/should-i-use-framework-or-libraries/</guid><description>&lt;p&gt;In the software development world, trends come and go, and often we go through the same cycle again and again.
It seems 2024 is the year of &lt;strong&gt;&amp;ldquo;Framework vs Libraries&amp;rdquo;&lt;/strong&gt; debate. I mean this debate is not new, but it is getting louder again.&lt;/p&gt;</description></item><item><title>Spring Boot + jOOQ Tutorial - 5 : Fetching Many-to-Many Relationships</title><link>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-many-to-many-associations/</link><pubDate>Thu, 26 Oct 2023 00:30:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-many-to-many-associations/</guid><description>&lt;p&gt;In the &lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations/"&gt;previous tutorial&lt;/a&gt;,
we have learned how to fetch &lt;strong&gt;One-to-Many&lt;/strong&gt; relationships using jOOQ.
In this tutorial, we will learn how to fetch &lt;strong&gt;Many-to-Many&lt;/strong&gt; relationships using jOOQ.&lt;/p&gt;</description></item><item><title>Spring Boot + jOOQ Tutorial - 4 : Fetching One-to-Many Relationships</title><link>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations/</link><pubDate>Mon, 23 Oct 2023 00:30:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations/</guid><description>&lt;p&gt;In the &lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations/"&gt;previous tutorial&lt;/a&gt;,
we have learned how to fetch &lt;strong&gt;One-to-One&lt;/strong&gt; relationships using jOOQ.
In this tutorial, we will learn how to fetch &lt;strong&gt;One-to-Many&lt;/strong&gt; relationships using jOOQ.&lt;/p&gt;</description></item><item><title>Spring Boot + jOOQ Tutorial - 3 : Fetching One-to-One Relationships</title><link>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations/</link><pubDate>Thu, 19 Oct 2023 00:30:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations/</guid><description>&lt;p&gt;In the &lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations/"&gt;previous tutorial&lt;/a&gt;,
we have learned how to implement basic CRUD Operations using jOOQ.
In this tutorial, we will learn how to fetch &lt;strong&gt;One-to-One&lt;/strong&gt; relationships using jOOQ.&lt;/p&gt;</description></item><item><title>Spring Boot + jOOQ Tutorial - 2 : Implementing CRUD Operations</title><link>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations/</link><pubDate>Mon, 16 Oct 2023 00:30:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations/</guid><description>&lt;p&gt;In the &lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started/"&gt;previous tutorial&lt;/a&gt;, we have seen how to generate jOOQ code using
the &lt;a href="https://github.com/testcontainers/testcontainers-jooq-codegen-maven-plugin"&gt;testcontainers-jooq-codegen-maven-plugin&lt;/a&gt;
and use jOOQ Typesafe DSL to execute SQL queries.
In this tutorial, we will learn how to implement basic CRUD Operations using jOOQ.&lt;/p&gt;</description></item><item><title>Spring Boot + jOOQ Tutorial - 1 : Getting Started</title><link>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started/</link><pubDate>Thu, 12 Oct 2023 00:30:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started/</guid><description>&lt;p&gt;&lt;a href="https://www.jooq.org/"&gt;jOOQ&lt;/a&gt; is a Java persistence library that provides SQL DSL for writing typesafe SQL queries.
It supports most of the popular databases like &lt;strong&gt;MySQL&lt;/strong&gt;, &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;Oracle&lt;/strong&gt;, &lt;strong&gt;SQL Server&lt;/strong&gt;, and many more.
In this tutorial, we will learn how to get started with jOOQ for implementing persistence layer in a Spring Boot application.
You can also use jOOQ in other JVM based languages like &lt;strong&gt;Kotlin&lt;/strong&gt;, &lt;strong&gt;Scala&lt;/strong&gt;, etc.&lt;/p&gt;</description></item><item><title>MyBatis Tutorials</title><link>https://www.sivalabs.in/blog/mybatis-tutorials/</link><pubDate>Tue, 18 Jul 2023 02:32:39 +0000</pubDate><guid>https://www.sivalabs.in/blog/mybatis-tutorials/</guid><description>&lt;h3 id="mybatis"&gt;MyBatis&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Should you use Lombok? Or, is it bad for you?</title><link>https://www.sivalabs.in/blog/should-you-use-lombok-or-is-it-bad-for-you/</link><pubDate>Mon, 24 Apr 2023 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/should-you-use-lombok-or-is-it-bad-for-you/</guid><description>&lt;p&gt;I&amp;rsquo;m a happy &lt;a href="https://projectlombok.org/"&gt;Lombok&lt;/a&gt; library user. I found this library a decade ago, and I&amp;rsquo;ve been using it ever since.
I don&amp;rsquo;t remember facing any major problems with it so far.&lt;/p&gt;
&lt;p&gt;However, I see a few people that I greatly admire and learn from often complain that Lombok is very bad, and you should avoid it.
Obviously, I am curious to know what am I missing? I know a couple of scenarios where using Lombok brings some challenges.
Apart from it, I really enjoy using the Lombok library.&lt;/p&gt;</description></item><item><title>My attempt to understand why people perceive Java as complex</title><link>https://www.sivalabs.in/blog/my-attempt-to-understand-why-people-perceive-java-as-complex/</link><pubDate>Sun, 03 Apr 2022 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/my-attempt-to-understand-why-people-perceive-java-as-complex/</guid><description>&lt;p&gt;I work as an Architect/TechLead/SeniorDeveloper depending on client engagement.
And, &lt;strong&gt;Java&lt;/strong&gt; is the primary programming language that I have used most of my career.
In recent years I got an opportunity to work with &lt;strong&gt;Go&lt;/strong&gt;, &lt;strong&gt;NodeJS&lt;/strong&gt; and &lt;strong&gt;.Net Core&lt;/strong&gt; technologies too.
I find Java, especially with &lt;strong&gt;Spring Boot&lt;/strong&gt;, a solid platform to build enterprise grade applications.&lt;/p&gt;</description></item><item><title>Improve JPA application performance using HypersistenceOptimizer</title><link>https://www.sivalabs.in/blog/improve-jpa-performance-using-hypersistence-optimizer/</link><pubDate>Fri, 01 Jan 2021 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/improve-jpa-performance-using-hypersistence-optimizer/</guid><description>&lt;p&gt;In Java world, &lt;a href="https://hibernate.org/"&gt;Hibernate/JPA&lt;/a&gt; is the most popular ORM framework.
Also, JPA/Hibernate is a &lt;a href="https://www.reddit.com/r/java/comments/5nz5nq/reasons_jpa_and_hibernate_should_be_phased_out/"&gt;very controversial topic&lt;/a&gt;
because &lt;a href="https://www.reddit.com/r/java/comments/53p253/how_hibernate_almost_ruined_my_career/"&gt;some people&lt;/a&gt; &lt;a href="https://www.reddit.com/r/java/comments/6prjad/java_shower_thoughts_when_people_say_high/"&gt;don&amp;rsquo;t like&lt;/a&gt; it at all.
It is very understandable though.&lt;/p&gt;
&lt;p&gt;Many people start using JPA/Hibernate with minimal knowledge and keep adding logic (read as &amp;ldquo;annotations&amp;rdquo;) as and when required to get the job done.
While checking the overall application performance, most of the time people realize it&amp;rsquo;s because of poor performance of persistence layer.&lt;/p&gt;</description></item><item><title>JOOQ Tutorials</title><link>https://www.sivalabs.in/blog/jooq-tutorials/</link><pubDate>Mon, 30 Nov 2020 02:32:39 +0000</pubDate><guid>https://www.sivalabs.in/blog/jooq-tutorials/</guid><description>&lt;h3 id="jooq"&gt;jOOQ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started/"&gt;jOOQ Tutorial - 1 : Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations/"&gt;jOOQ Tutorial - 2 : Implementing CRUD Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations/"&gt;jOOQ Tutorial - 3 : Fetching One-to-One Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations/"&gt;jOOQ Tutorial - 4 : Fetching One-to-Many Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-many-to-many-associations/"&gt;jOOQ Tutorial - 5 : Fetching Many-to-Many Relationships&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Tutorials</title><link>https://www.sivalabs.in/tutorials/</link><pubDate>Mon, 30 Nov 2020 02:32:39 +0000</pubDate><guid>https://www.sivalabs.in/tutorials/</guid><description>&lt;h3 id="spring-ai"&gt;Spring AI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-ai-chat-with-llms/"&gt;Spring AI : Chat with LLMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-ai-structured-output/"&gt;Spring AI : Structured Output&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-ai-chat-memory/"&gt;Spring AI : Chat Memory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="spring-boot"&gt;Spring Boot&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/getting-started-with-spring-boot/"&gt;Getting Started with Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-testing-tutorial/"&gt;Spring Boot Testing Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-application-configuration-tutorial/"&gt;Spring Boot Application Configuration Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-logging-tutorial/"&gt;Spring Boot Logging Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-profiles-tutorial/"&gt;Spring Boot Profiles Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jdbctemplate-tutorial/"&gt;Spring Boot JdbcTemplate Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-database-transaction-management-tutorial/"&gt;Spring Boot Database Transaction Management Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-flyway-database-migration-tutorial/"&gt;Spring Boot Flyway Database Migration Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-1/"&gt;Spring Boot REST API Best Practices - Part 1 : Implementing Get Collection API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-2/"&gt;Spring Boot REST API Best Practices - Part 2 : Implementing Create and Update APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-3/"&gt;Spring Boot REST API Best Practices - Part 3 : Implementing FindById and DeleteById APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-4/"&gt;Spring Boot REST API Best Practices - Part 4 : Exception Handling in REST APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/why-springboot-so-popular-how-to-learn-springboot/"&gt;Why Spring Boot is so popular and how to learn Spring Boot effectively?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/why-springboot/"&gt;Why Spring Boot?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/how-springboot-autoconfiguration-magic/"&gt;How Spring Boot AutoConfiguration magic works?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/creating-custom-springboot-starter-for/"&gt;Creating Custom Spring Boot Starter for Twitter4j&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/springboot-messaging-rabbitmq/"&gt;Spring Boot Messaging with RabbitMQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/session-management-using-spring-session-jdbc-datastore/"&gt;Session Management using Spring Session with JDBC DataStore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-best-practices/"&gt;Spring Boot Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-testing/"&gt;Testing Spring Boot Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-integration-testing-using-testcontainers-starter/"&gt;Spring Boot Integration Testing using TestContainers Starter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/remote-debugging-spring-boot-application/"&gt;Remote debugging Spring Boot application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/retrying-method-execution-using-spring-aop/"&gt;Retrying Method Execution using Spring AOP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="spring-security-oauth-20-tutorials"&gt;Spring Security OAuth 2.0 Tutorials&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-introduction/"&gt;Spring Security OAuth 2 Tutorial - 1 : Getting familiar with OAuth 2 concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-authorization-code-flow/"&gt;Spring Security OAuth 2 Tutorial - 2 : Authorization Code Flow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-client-credentials-flow/"&gt;Spring Security OAuth 2 Tutorial - 3 : Client Credentials Flow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-authorization-code-flow-with-pkce/"&gt;Spring Security OAuth 2 Tutorial - 4 : Authorization Code Flow with PKCE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-implicit-and-resource-owner-password-credentials-flow/"&gt;Spring Security OAuth 2 Tutorial - 5 : Implicit &amp;amp; Resource Owner Password Credentials Flows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-microservices-project-setup/"&gt;Spring Security OAuth 2 Tutorial - 6 : Microservices Sample Project Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-securing-springmvc-client-application/"&gt;Spring Security OAuth 2 Tutorial - 7 : Securing Spring MVC Client Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-securing-resource-server/"&gt;Spring Security OAuth 2 Tutorial - 8 : Securing Resource Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-integrating-client-and-resource-server/"&gt;Spring Security OAuth 2 Tutorial - 9 : Invoking Secured Resource Server APIs from Client Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-service-to-service-communication-using-client-credentials-flow/"&gt;Spring Security OAuth 2 Tutorial - 10 : Service to Service Communication using Client Credentials Flow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="spring-cloud"&gt;Spring Cloud&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/"&gt;Introduction to Spring Cloud Config Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus/"&gt;Auto Refresh Config Changes using Spring Cloud Bus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="microservices"&gt;Microservices&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/microservices-using-springboot-spring-cloud-part-1-overview/"&gt;Part 1 : MicroServices : Spring Boot &amp;amp; Spring Cloud Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/microservices-part-2-configuration-management-spring-cloud-config-vault/"&gt;Part 2 : MicroServices : Configuration Management with Spring Cloud Config and Vault&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/microservices-springcloud-eureka/"&gt;Part 3 : MicroServices : Spring Cloud Service Registry and Discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-cloud-netflix-circuit-breaker/"&gt;Part 4 : MicroServices : Spring Cloud Circuit Breaker using Netflix Hystrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/microservices-part-5-spring-cloud-zuul-proxy-as-api-gateway/"&gt;Part 5 : MicroServices : Spring Cloud Zuul Proxy as API Gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/microservices-part-6-distributed-tracing-with-spring-cloud-sleuth-and-zipkin/"&gt;Part 6 : MicroServices : Distributed Tracing with Spring Cloud Sleuth and Zipkin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="kubernetes"&gt;Kubernetes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/getting-started-with-kubernetes/"&gt;Getting Started with Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/kubernetes-deployment-rolling-updates/"&gt;Kubernetes - Releasing a new version of the application using Deployment Rolling Updates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/kubernetes-blue-green-deployments/"&gt;Kubernetes - Blue/Green Deployments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/kubernetes-ingress/"&gt;Kubernetes - Exposing Services to outside of Cluster using Ingress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="jooq"&gt;jOOQ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started/"&gt;jOOQ Tutorial - 1 : Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations/"&gt;jOOQ Tutorial - 2 : Implementing CRUD Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations/"&gt;jOOQ Tutorial - 3 : Fetching One-to-One Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations/"&gt;jOOQ Tutorial - 4 : Fetching One-to-Many Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-many-to-many-associations/"&gt;jOOQ Tutorial - 5 : Fetching Many-to-Many Relationships&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mybatis"&gt;MyBatis&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="thoughts--opinions"&gt;Thoughts &amp;amp; Opinions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/few-things-i-learned-the-hardway-in-15-years-of-my-career/"&gt;Few Things I learned in the HardWay in 15 years of my career&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/my-life-as-software-developer-in-india/"&gt;My Life as a Software Developer in India&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/a-developers-perspective-on-spring-vs-javaee/"&gt;A Developers Perspective on Spring vs JavaEE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/can-microservices-architecture-solve-all-your-problems/"&gt;Can MicroServices Architecture Solve All Your Problems?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/clean-code-dont-mix-different-levels-of-abstractions/"&gt;Clean Code: Don&amp;rsquo;t mix different levels of abstractions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/keep-code-clean-watchdog-spotthebug/"&gt;Keep The Code Clean: WatchDog &amp;amp; SpotTheBug Approach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/frameworks-making-developers-dumb/"&gt;Are frameworks making developers dumb?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sivalabs.in/blog/10-things-to-become-outstanding-java/"&gt;10 things to become an outstanding Java developer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Philip's Testing Spring Boot Applications Masterclass Course Review</title><link>https://www.sivalabs.in/blog/philip-testing-spring-boot-applications-masterclass-course-review/</link><pubDate>Wed, 14 Oct 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/philip-testing-spring-boot-applications-masterclass-course-review/</guid><description>&lt;p&gt;If you ever worked on a large project which doesn&amp;rsquo;t have any tests then you know how painful it is to work on such codebase.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;You know what is more painful? Working on a project which has plenty of USELESS tests written for the sake of passing minimum code coverage requirement.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>LocalStack Spring Boot Starter Tutorial</title><link>https://www.sivalabs.in/blog/localstack-spring-boot-starter-tutorial/</link><pubDate>Tue, 15 Sep 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/localstack-spring-boot-starter-tutorial/</guid><description>&lt;p&gt;I was working on a Spring Boot application which is planned to deploy on AWS and, we were using S3, SQS and RDS services.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/localstack/localstack"&gt;LocalStack&lt;/a&gt; provides an easy-to-use test/mocking framework
for developing AWS based Cloud applications.&lt;/p&gt;</description></item><item><title>All the resources you ever need as a Java &amp; Spring application developer</title><link>https://www.sivalabs.in/blog/all-the-resources-you-ever-need-as-a-java-spring-application-developer/</link><pubDate>Sun, 13 Sep 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/all-the-resources-you-ever-need-as-a-java-spring-application-developer/</guid><description>&lt;p&gt;Nowadays software development is a challenging task as the number of programming languages, frameworks, libraries are increasing rapidly day by day.
Luckily, the number of resources to learn on the internet for free also increased a lot. There are a ton of free resources to learn almost everything on the internet.
There are lots of official documentation, blog posts, Udemy courses, YouTube videos etc.&lt;/p&gt;</description></item><item><title>Remote debugging Spring Boot application</title><link>https://www.sivalabs.in/blog/remote-debugging-spring-boot-application/</link><pubDate>Sat, 30 May 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/remote-debugging-spring-boot-application/</guid><description>&lt;p&gt;We all know how to run Spring Boot application in debug mode from our favorite IDEs(IntelliJ IDEA, Eclipse etc) and debug the code.
Recently I had to debug a Spring Boot application which is running on a remote server.&lt;/p&gt;
&lt;p&gt;There is already lot of information on the Internet on how to remote debug java applications, but some approaches didn&amp;rsquo;t work for me.
So, here I would like to share my findings.&lt;/p&gt;</description></item><item><title>What I Learned in Week-14, 2020</title><link>https://www.sivalabs.in/blog/what-i-learned-2020-week-14/</link><pubDate>Sun, 05 Apr 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/what-i-learned-2020-week-14/</guid><description>&lt;p&gt;It&amp;rsquo;s been tough time for everyone due to the Corona virus situation.
Staying at home for weeks and weeks is not easy, but it is very necessary thing to do so that we don&amp;rsquo;t spread the virus.&lt;/p&gt;
&lt;p&gt;However, if I look on the bright side I used to spend minimum 3 hours for office commute everyday.
Now I am using that time for various other activities including learning some new things.&lt;/p&gt;</description></item><item><title>Imposing Code Structure Guidelines using ArchUnit</title><link>https://www.sivalabs.in/blog/impose-architecture-guidelines-using-archunit/</link><pubDate>Wed, 01 Apr 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/impose-architecture-guidelines-using-archunit/</guid><description>&lt;p&gt;While building the software, we all agree, as a team, to follow a set of guidelines which are typically considered as best practices.
But during the development, developers might violate those guidelines unknowingly or ignorance.
Typically, we rely upon &lt;strong&gt;code reviews&lt;/strong&gt; or code quality checking tools like &lt;strong&gt;SonarQube&lt;/strong&gt;, &lt;strong&gt;PMD&lt;/strong&gt;, etc. to check for such violations.
But some of the guidelines could be opinionated decisions which might not be able to automate using SonarQube, PMD etc.&lt;/p&gt;</description></item><item><title>What I Learned in Week-11, 2020</title><link>https://www.sivalabs.in/blog/what-i-learned-2020-week-11/</link><pubDate>Sat, 14 Mar 2020 23:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/what-i-learned-2020-week-11/</guid><description>&lt;p&gt;I come across many blog posts from various sources like &lt;a href="https://twitter.com/sivalabs"&gt;Twitter&lt;/a&gt;,
&lt;a href="https://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;, etc., and some of them are very helpful.
Also, in day-to-day work I learn a few new things, explore some new tools.
Usually I keep track of this information using &lt;strong&gt;Browser Bookmarks&lt;/strong&gt; and &lt;a href="https://app.getpocket.com/"&gt;Pocket&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I thought maybe this information could be useful for others too. So, I am going to share it weekly on my blog.&lt;/p&gt;</description></item><item><title>Kafka Tutorial - Producer and Consumer using Spring Boot</title><link>https://www.sivalabs.in/blog/kafka-tutorial-producer-consumer-using-spring-boot/</link><pubDate>Mon, 24 Jun 2019 02:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/kafka-tutorial-producer-consumer-using-spring-boot/</guid><description>&lt;p&gt;In the previous post &lt;a href="https://www.sivalabs.in/blog/kafka-tutorial-java-producer-consumer/"&gt;Kafka Tutorial - Java Producer and Consumer&lt;/a&gt;, we learned how to implement a Producer and Consumer for a Kafka topic using the plain Java Client API.&lt;/p&gt;
&lt;p&gt;In this post, we are going to look at how to use Spring for Kafka, which provides a high-level abstraction over the Kafka Java Client API to make it easier to work with Kafka.&lt;/p&gt;</description></item><item><title>Kafka Tutorial - Java Producer and Consumer</title><link>https://www.sivalabs.in/blog/kafka-tutorial-java-producer-consumer/</link><pubDate>Fri, 21 Jun 2019 02:29:17 +0000</pubDate><guid>https://www.sivalabs.in/blog/kafka-tutorial-java-producer-consumer/</guid><description>&lt;p&gt;&lt;a href="https://kafka.apache.org/"&gt;Kafka&lt;/a&gt;, depending on how you use it, can be seen as a Message Broker, Event Store, or a Streaming Platform, etc. Kafka became a preferred technology for many modern applications because of various reasons, like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kafka can be used as an Event Store if you are using an event-driven microservices architecture.&lt;/li&gt;
&lt;li&gt;Kafka can be used as a Message Broker to enable communication across multiple applications.&lt;/li&gt;
&lt;li&gt;Kafka can be used as a streaming platform for processing events in real-time.
etc. etc.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Spring Cloud Tutorials – Auto Refresh Config Changes using Spring Cloud Bus</title><link>https://www.sivalabs.in/blog/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus/</link><pubDate>Mon, 14 Aug 2017 12:30:43 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus/</guid><description>&lt;p&gt;In the previous article, &lt;a href="https://www.sivalabs.in/blog/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/"&gt;Introduction to Spring Cloud Config Server&lt;/a&gt;, we have seen how to use Spring Cloud Config Server.&lt;/p&gt;
&lt;p&gt;But the problem is that to reload the config changes in Config Client applications, we need to trigger the &lt;strong&gt;/refresh&lt;/strong&gt; endpoint manually. This is not practical or viable if you have a large number of applications.&lt;/p&gt;</description></item><item><title>Spring Cloud Tutorials – Introduction to Spring Cloud Config Server</title><link>https://www.sivalabs.in/blog/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/</link><pubDate>Mon, 14 Aug 2017 03:35:07 +0000</pubDate><guid>https://www.sivalabs.in/blog/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/</guid><description>&lt;p&gt;Spring Boot provides a lot of flexibility in externalizing configuration properties via properties or YAML files. We can also configure properties for each environment (dev, qa, prod, etc.) separately using profile-specific configuration files such as &lt;strong&gt;application.properties&lt;/strong&gt;, &lt;strong&gt;application-dev.properties&lt;/strong&gt;, &lt;strong&gt;application-prod.properties&lt;/strong&gt;, etc. But once the application is started, we cannot update the properties at runtime. If we change the properties, we need to restart the application to use the updated configuration properties.&lt;/p&gt;</description></item><item><title>My Life as a Software Developer in India</title><link>https://www.sivalabs.in/blog/my-life-as-software-developer-in-india/</link><pubDate>Mon, 06 Jul 2015 16:17:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/my-life-as-software-developer-in-india/</guid><description>&lt;p&gt;I am Siva, working as a Software Developer in Hyderabad, India. Working as a Software Developer is very exciting as you see new things coming in every day. If there are no new things, at least we put a new fancy name to some old concept and celebrate (#microservices) :-). But in my opinion, working as a Software Developer in India is a little bit different and hard too. A few things are good, and a few things are bad.&lt;/p&gt;</description></item><item><title>A Developers Perspective on Spring vs JavaEE</title><link>https://www.sivalabs.in/blog/a-developers-perspective-on-spring-vs-javaee/</link><pubDate>Mon, 15 Jun 2015 13:04:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/a-developers-perspective-on-spring-vs-javaee/</guid><description>&lt;p&gt;In the Java community, Spring vs. JavaEE is a never-ending debate. In such debates, people form two groups consisting of evangelists, architects, and hardcore fans of one platform and debate endlessly. Those who participate in the debates may be architects who are responsible for platform selection. But what would developers think about this Spring vs. JavaEE debate?&lt;/p&gt;
&lt;p&gt;I am a Java developer who uses both Spring and JavaEE, and I am not part of the Spring or JavaEE fan club. Here, I would like to share my own thoughts on this epic Spring vs. JavaEE debate.&lt;/p&gt;</description></item><item><title>Clean Code: Don't mix different levels of abstractions</title><link>https://www.sivalabs.in/blog/clean-code-dont-mix-different-levels-of-abstractions/</link><pubDate>Sun, 29 Dec 2013 00:53:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/clean-code-dont-mix-different-levels-of-abstractions/</guid><description>&lt;p&gt;We spend more time reading code than writing it. So if the code is more readable, it will obviously increase developer productivity.&lt;/p&gt;
&lt;p&gt;Many people associate the readability of code with coding conventions like following standard naming conventions, closing files, DB resources, etc. When it comes to code reviews, most people focus on these trivial things only, like checking for naming convention violations or whether resources are properly released in a finally block.&lt;/p&gt;</description></item><item><title>MyBatis Tutorial : Part4 – Spring Integration</title><link>https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/</link><pubDate>Wed, 24 Oct 2012 00:40:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/</guid><description>&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;&lt;strong&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;&lt;strong&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MyBatis-Spring is a sub-project of MyBatis that provides Spring integration support, which drastically simplifies MyBatis usage. For those who are familiar with Spring&amp;rsquo;s Dependency Injection process, using MyBatis-Spring is very simple.&lt;/p&gt;
&lt;p&gt;First, let us see the process of using MyBatis without Spring.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create SqlSessionFactory using SqlSessionFactoryBuilder by passing mybatis-config.xml, which contains DataSource properties, a list of Mapper XMLs, TypeAliases, etc.&lt;/li&gt;
&lt;li&gt;Create an SqlSession object from SqlSessionFactory.&lt;/li&gt;
&lt;li&gt;Get a Mapper instance from SqlSession and execute queries.&lt;/li&gt;
&lt;li&gt;Commit or roll back the transaction using the SqlSession object.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With MyBatis-Spring, most of the above steps can be configured in the Spring ApplicationContext, and SqlSession or Mapper instances can be injected into Spring Beans. Then we can use Spring&amp;rsquo;s TransactionManagement features without writing transaction commit/rollback code all over the place.&lt;/p&gt;</description></item><item><title>MyBatis Tutorial: Part 3 – Mapping Relationships</title><link>https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/</link><pubDate>Sun, 21 Oct 2012 14:07:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/</guid><description>&lt;p&gt;In this post, let us see how to use MyBatis ResultMap configuration to map relationships.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;&lt;strong&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;&lt;strong&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To illustrate, we are considering the following sample domain model:&lt;/p&gt;
&lt;p&gt;There will be Users and each User may have a Blog and each Blog can contain zero or more posts.&lt;/p&gt;</description></item><item><title>MyBatis Tutorial: Part-2: CRUD operations Using Annotations</title><link>https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/</link><pubDate>Sun, 21 Oct 2012 11:49:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/</guid><description>&lt;p&gt;In this post, I will explain how to perform CRUD operations using MyBatis&amp;rsquo;s annotation support without needing to configure queries in XML mapper files.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;&lt;strong&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;&lt;strong&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Step#1: Create a table BLOG and a java domain Object Blog.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;CREATE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TABLE&lt;/span&gt; blog 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blog_id int(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;) unsigned &lt;span style="color:#66d9ef"&gt;NOT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NULL&lt;/span&gt; auto_increment,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blog_name varchar(&lt;span style="color:#ae81ff"&gt;45&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;NOT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; created_on datetime &lt;span style="color:#66d9ef"&gt;NOT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;KEY&lt;/span&gt; (blog_id)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;) ENGINE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;InnoDB &lt;span style="color:#66d9ef"&gt;DEFAULT&lt;/span&gt; CHARSET&lt;span style="color:#f92672"&gt;=&lt;/span&gt;latin1;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; com.sivalabs.mybatisdemo.domain;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; java.util.Date;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Blog&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; Integer blogId;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; String blogName;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; Date createdOn;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;//Setters and getters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; String &lt;span style="color:#a6e22e"&gt;toString&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Blog [blogId=&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; blogId &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;, blogName=&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; blogName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;, createdOn=&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; createdOn &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;]&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step#2: Create UserMapper.java interface with SQL queries in Annotations.&lt;/p&gt;</description></item><item><title>MyBatis Tutorial: Part1 – CRUD Operations</title><link>https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/</link><pubDate>Sun, 21 Oct 2012 11:10:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/</guid><description>&lt;p&gt;MyBatis is an SQL Mapper tool which greatly simplifies database programming when compared to using JDBC directly.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part1 – CRUD Operations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations/"&gt;&lt;strong&gt;MyBatis Tutorial: Part-2: CRUD operations Using Annotations&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships/"&gt;&lt;strong&gt;MyBatis Tutorial: Part 3 – Mapping Relationships&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration/"&gt;&lt;strong&gt;MyBatis Tutorial : Part4 – Spring Integration&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step1:&lt;/strong&gt; Create a Maven project and configure MyBatis dependencies.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;xmlns=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://maven.apache.org/POM/4.0.0&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://maven.apache.org/POM/4.0.0 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; http://maven.apache.org/xsd/maven-4.0.0.xsd&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;modelVersion&amp;gt;&lt;/span&gt;4.0.0&lt;span style="color:#f92672"&gt;&amp;lt;/modelVersion&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.sivalabs&lt;span style="color:#f92672"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mybatis-demo&lt;span style="color:#f92672"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;0.0.1-SNAPSHOT&lt;span style="color:#f92672"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;packaging&amp;gt;&lt;/span&gt;jar&lt;span style="color:#f92672"&gt;&amp;lt;/packaging&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;mybatis-demo&lt;span style="color:#f92672"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;http://maven.apache.org&lt;span style="color:#f92672"&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;project.build.sourceEncoding&amp;gt;&lt;/span&gt;UTF-8&lt;span style="color:#f92672"&gt;&amp;lt;/project.build.sourceEncoding&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;build&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;plugins&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.maven.plugins&lt;span style="color:#f92672"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-compiler-plugin&lt;span style="color:#f92672"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;2.3.2&lt;span style="color:#f92672"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;source&amp;gt;&lt;/span&gt;1.6&lt;span style="color:#f92672"&gt;&amp;lt;/source&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;target&amp;gt;&lt;/span&gt;1.6&lt;span style="color:#f92672"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;encoding&amp;gt;&lt;/span&gt;${project.build.sourceEncoding}&lt;span style="color:#f92672"&gt;&amp;lt;/encoding&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/plugins&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/build&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;junit&lt;span style="color:#f92672"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;junit&lt;span style="color:#f92672"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;4.10&lt;span style="color:#f92672"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;test&lt;span style="color:#f92672"&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.mybatis&lt;span style="color:#f92672"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mybatis&lt;span style="color:#f92672"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.1.1&lt;span style="color:#f92672"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;mysql&lt;span style="color:#f92672"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mysql-connector-java&lt;span style="color:#f92672"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;5.1.21&lt;span style="color:#f92672"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;runtime&lt;span style="color:#f92672"&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Step#2:&lt;/strong&gt; Create the table USER and a Java domain Object User as follows:&lt;/p&gt;</description></item><item><title>Keep The Code Clean: WatchDog &amp; SpotTheBug Approach</title><link>https://www.sivalabs.in/blog/keep-code-clean-watchdog-spotthebug/</link><pubDate>Tue, 28 Aug 2012 04:55:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/keep-code-clean-watchdog-spotthebug/</guid><description>&lt;p&gt;Before discussing the &lt;strong&gt;WatchDog &amp;amp; SpotTheBug Approach&lt;/strong&gt;, let me give a brief context on the need for this.&lt;/p&gt;
&lt;p&gt;Three months back, I was asked to write core infrastructure code for our new application, which uses all the latest and greatest technologies.
I have written the infrastructure code and implemented two use cases to demonstrate which logic should go into which layer, and the code looks good (at least to me :-)). Then I moved on to my main project, and I was hearing that the project that I designed (from now onwards, I will refer to this as ProjectA) is going well.&lt;/p&gt;</description></item><item><title>When to use RequestDispatcher.forward() and response.sendRedirect()?</title><link>https://www.sivalabs.in/blog/when-to-use-requestdispatcherforward/</link><pubDate>Thu, 25 Aug 2011 00:35:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/when-to-use-requestdispatcherforward/</guid><description>&lt;p&gt;Many people know how RequestDispatcher.forward() and response.sendRedirect() work.&lt;/p&gt;
&lt;p&gt;RequestDispatcher.forward() is generally called server-side redirection and is used to forward to a resource within the same application. That resource could be a JSP or another servlet.&lt;/p&gt;
&lt;p&gt;response.sendRedirect() is generally called client-side redirection, as it issues a new request from the browser. This method is used to redirect to another resource within the same application, to a resource in some other application running in the same web container, or to any other resource running in some other web container.&lt;/p&gt;</description></item><item><title>10 things to become an outstanding Java developer</title><link>https://www.sivalabs.in/blog/10-things-to-become-outstanding-java/</link><pubDate>Wed, 26 Jan 2011 07:11:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/10-things-to-become-outstanding-java/</guid><description>&lt;p&gt;If you are a Java developer and passionate about technology, you can follow the tips below, which will make you an outstanding Java developer.&lt;/p&gt;
&lt;h4 id="1-have-a-strong-foundation-and-understanding-of-oo-principles"&gt;1. Have a strong foundation and understanding of OO Principles&lt;/h4&gt;
&lt;p&gt;For a Java developer, having a strong understanding of Object-Oriented Programming is a must. Without a strong foundation in OOPS, one can&amp;rsquo;t realize the beauty of an object-oriented programming language like Java. If you don&amp;rsquo;t have a good idea of what OOPS is, even though you are using an OOP language, you may still be coding in a procedural way. Just studying the definitions of OO principles won&amp;rsquo;t help much. You should know how to apply those OO principles when designing a solution in an OO way. So, one should have strong knowledge of object modeling, inheritance, polymorphism, and design patterns.&lt;/p&gt;</description></item><item><title>Welcome note</title><link>https://www.sivalabs.in/blog/welcome-note/</link><pubDate>Sun, 21 Dec 2008 08:05:00 +0000</pubDate><guid>https://www.sivalabs.in/blog/welcome-note/</guid><description>&lt;p&gt;Hi all,
Welcome, folks.
This is a blog where you can find tutorials on various Java and JavaEE technologies and have discussions regarding technical problems and application development-related issues.&lt;/p&gt;
&lt;p&gt;I used to blog at &lt;a href="https://sivalabs.blogspot.com/"&gt;https://sivalabs.blogspot.com/&lt;/a&gt;, but now moved to &lt;a href="https://sivalabs.in"&gt;https://sivalabs.in&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>