diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index f059ec449a..e4363cce9c 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -80,6 +80,7 @@ spring-data-geode spring-data-jpa-annotations + spring-data-jpa-annotations-2 spring-data-jpa-crud spring-data-jpa-crud-2 spring-data-jpa-enterprise diff --git a/persistence-modules/spring-data-jpa-annotations-2/pom.xml b/persistence-modules/spring-data-jpa-annotations-2/pom.xml new file mode 100644 index 0000000000..306d2ed172 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations-2/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + spring-data-jpa-annotations-2 + spring-data-jpa-annotations-2 + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-test + test + + + com.h2database + h2 + + + jakarta.persistence + jakarta.persistence-api + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/User.java b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/User.java new file mode 100644 index 0000000000..23b9273c82 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/User.java @@ -0,0 +1,42 @@ +package com.baeldung.datajpatest; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "app_user") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String username; + private String password; + + 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; + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserApplication.java b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserApplication.java new file mode 100644 index 0000000000..b58c7b2339 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.datajpatest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserApplication { + + public static void main(String[] args) { + SpringApplication.run(UserApplication.class); + } +} diff --git a/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserRepository.java b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserRepository.java new file mode 100644 index 0000000000..3393081203 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations-2/src/main/java/com/baeldung/datajpatest/UserRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.datajpatest; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserRepository extends JpaRepository { + + User findByUsername(String username); +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-annotations-2/src/test/java/com/baeldung/datajpatest/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations-2/src/test/java/com/baeldung/datajpatest/UserRepositoryIntegrationTest.java new file mode 100644 index 0000000000..9c933c8202 --- /dev/null +++ b/persistence-modules/spring-data-jpa-annotations-2/src/test/java/com/baeldung/datajpatest/UserRepositoryIntegrationTest.java @@ -0,0 +1,68 @@ +package com.baeldung.datajpatest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.After; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +@DataJpaTest +public class UserRepositoryIntegrationTest { + + @Autowired + private UserRepository userRepository; + + private User testUser; + + @BeforeEach + public void setUp() { + // Initialize test data before each test method test + testUser = new User(); + testUser.setUsername("testuser"); + testUser.setPassword("password"); + userRepository.save(testUser); + } + + @After + public void tearDown() { + // Release test data after each test method + userRepository.delete(testUser); + } + + @Test + void givenUser_whenSaved_thenCanBeFoundById() { + // Verify that the user has been saved successfully + User savedUser = userRepository.findById(testUser.getId()) + .orElse(null); + + assertNotNull(savedUser); + assertEquals(testUser.getUsername(), savedUser.getUsername()); + assertEquals(testUser.getPassword(), savedUser.getPassword()); + } + + @Test + void givenUser_whenUpdated_thenCanBeFoundByIdWithUpdatedData() { + testUser.setUsername("updatedUsername"); + userRepository.save(testUser); + + User updatedUser = userRepository.findById(testUser.getId()) + .orElse(null); + + assertNotNull(updatedUser); + assertEquals("updatedUsername", updatedUser.getUsername()); + } + + @Test + void givenUser_whenFindByUsernameCalled_thenUserIsFound() { + User foundUser = userRepository.findByUsername("testuser"); + + assertNotNull(foundUser); + assertEquals("testuser", foundUser.getUsername()); + } +} \ No newline at end of file