diff --git a/jackson-modules/jackson-annotations/pom.xml b/jackson-modules/jackson-annotations/pom.xml
index 56fd6cf2fa..4bb9341e43 100644
--- a/jackson-modules/jackson-annotations/pom.xml
+++ b/jackson-modules/jackson-annotations/pom.xml
@@ -25,6 +25,27 @@
${rest-assured.version}
test
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+ ${spring-boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jdbc
+ ${spring-boot.version}
+
+
+ com.h2database
+ h2
+ ${h2.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
@@ -38,7 +59,9 @@
+ 2.1.214
3.1.1
+ 2.5.0
\ No newline at end of file
diff --git a/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Application.java b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Application.java
new file mode 100644
index 0000000000..ad4ef9e9ac
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Application.java
@@ -0,0 +1,13 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Person.java b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Person.java
new file mode 100644
index 0000000000..982d0e6440
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/Person.java
@@ -0,0 +1,34 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import java.io.Serializable;
+
+class Person implements Serializable {
+
+ @JsonIgnore
+ private final Long id;
+
+ private final String firstName;
+
+ private final String lastName;
+
+ public Person(Long id, String firstName, String lastName) {
+ this.id = id;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+}
diff --git a/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/User.java b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/User.java
new file mode 100644
index 0000000000..c12e5225db
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/User.java
@@ -0,0 +1,64 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "Users")
+class User implements Serializable {
+
+ @Id
+ private Long id;
+
+ private String username;
+
+ private String password;
+
+ @Transient
+ private String repeatedPassword;
+
+ public User() {
+ }
+
+ public User(Long id, String username, String password, String repeatedPassword) {
+ this.id = id;
+ this.username = username;
+ this.password = password;
+ this.repeatedPassword = repeatedPassword;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getRepeatedPassword() {
+ return repeatedPassword;
+ }
+
+ public void setRepeatedPassword(String repeatedPassword) {
+ this.repeatedPassword = repeatedPassword;
+ }
+}
diff --git a/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/UserRepository.java b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/UserRepository.java
new file mode 100644
index 0000000000..ca6428ca3e
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/main/java/com/baeldung/jackson/jsonignorevstransient/UserRepository.java
@@ -0,0 +1,8 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface UserRepository extends JpaRepository {
+}
diff --git a/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/PersonUnitTest.java b/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/PersonUnitTest.java
new file mode 100644
index 0000000000..0595fc240c
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/PersonUnitTest.java
@@ -0,0 +1,23 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.not;
+
+class PersonUnitTest {
+
+ @Test
+ void givenPerson_whenSerializing_thenIdFieldIgnored() throws JsonProcessingException {
+
+ Person person = new Person(1L, "My First Name", "My Last Name");
+ String result = new ObjectMapper().writeValueAsString(person);
+
+ assertThat(result, containsString("firstName"));
+ assertThat(result, containsString("lastName"));
+ assertThat(result, not(containsString("id")));
+ }
+}
\ No newline at end of file
diff --git a/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/UserUnitTest.java b/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/UserUnitTest.java
new file mode 100644
index 0000000000..bc57b6f550
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/test/java/com/baeldung/jackson/jsonignorevstransient/UserUnitTest.java
@@ -0,0 +1,39 @@
+package com.baeldung.jackson.jsonignorevstransient;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+@SpringBootTest
+class UserUnitTest {
+
+ @Autowired
+ UserRepository userRepository;
+
+ @Test
+ void givenUser_whenSave_thenSkipTransientFields() {
+ User user = new User(1L, "user", "newPassword123", "newPassword123");
+ User savedUser = userRepository.save(user);
+
+ assertNotNull(savedUser);
+ assertNotNull(savedUser.getPassword());
+ assertNull(savedUser.getRepeatedPassword());
+ }
+
+ @Test
+ void givenUser_whenSerializing_thenTransientFieldNotIgnored() throws JsonProcessingException {
+ User user = new User(1L, "user", "newPassword123", "newPassword123");
+ String result = new ObjectMapper().writeValueAsString(user);
+
+ assertThat(result, containsString("user"));
+ assertThat(result, containsString("repeatedPassword"));
+ }
+
+}
\ No newline at end of file
diff --git a/jackson-modules/jackson-annotations/src/test/resources/application.properties b/jackson-modules/jackson-annotations/src/test/resources/application.properties
new file mode 100644
index 0000000000..d0f6dd95ef
--- /dev/null
+++ b/jackson-modules/jackson-annotations/src/test/resources/application.properties
@@ -0,0 +1,5 @@
+hibernate.hbm2ddl.auto=create-drop
+
+spring.datasource.jdbcUrl=jdbc:h2:mem:testDb;DB_CLOSE_DELAY=-1
+spring.datasource.username=sa
+spring.datasource.password=sa
\ No newline at end of file