BAEL-6320: format & code review
This commit is contained in:
parent
7be3725480
commit
4f8662aa01
|
@ -24,6 +24,7 @@
|
|||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
|
@ -31,5 +32,4 @@
|
|||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.NaturalIdRepositoryImpl;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
|
|
|
@ -2,8 +2,10 @@ package com.baeldung.spring.data.jpa.naturalid;
|
|||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.ConferenceRoom;
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.GuestRoom;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityManagerFactory;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -12,24 +14,24 @@ import java.util.Optional;
|
|||
@Service
|
||||
public class HotelRoomsService {
|
||||
|
||||
private final EntityManager entityManager;
|
||||
private final EntityManager entityManager;
|
||||
|
||||
public HotelRoomsService(EntityManagerFactory entityManagerFactory) {
|
||||
this.entityManager = entityManagerFactory.createEntityManager();
|
||||
}
|
||||
public HotelRoomsService(EntityManagerFactory entityManagerFactory) {
|
||||
this.entityManager = entityManagerFactory.createEntityManager();
|
||||
}
|
||||
|
||||
public Optional<ConferenceRoom> conferenceRoom(String name) {
|
||||
Session session = entityManager.unwrap(Session.class);
|
||||
return session.bySimpleNaturalId(ConferenceRoom.class)
|
||||
.loadOptional(name);
|
||||
}
|
||||
public Optional<ConferenceRoom> conferenceRoom(String name) {
|
||||
Session session = entityManager.unwrap(Session.class);
|
||||
return session.bySimpleNaturalId(ConferenceRoom.class)
|
||||
.loadOptional(name);
|
||||
}
|
||||
|
||||
public Optional<GuestRoom> guestRoom(int roomNumber, int floor) {
|
||||
Session session = entityManager.unwrap(Session.class);
|
||||
return session.byNaturalId(GuestRoom.class)
|
||||
.using("roomNumber", roomNumber)
|
||||
.using("floor", floor)
|
||||
.loadOptional();
|
||||
}
|
||||
public Optional<GuestRoom> guestRoom(int roomNumber, int floor) {
|
||||
Session session = entityManager.unwrap(Session.class);
|
||||
return session.byNaturalId(GuestRoom.class)
|
||||
.using("roomNumber", roomNumber)
|
||||
.using("floor", floor)
|
||||
.loadOptional();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.NaturalIdRepositoryImpl;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
|
||||
@Configuration
|
||||
@EnableJpaRepositories(repositoryBaseClass = NaturalIdRepositoryImpl.class)
|
||||
public class NaturalIdRepoConfig {
|
||||
public class NaturalIdRepositoryConfig {
|
||||
}
|
|
@ -4,53 +4,46 @@ import jakarta.persistence.Entity;
|
|||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
import org.hibernate.annotations.NaturalId;
|
||||
|
||||
@Entity
|
||||
public class ConferenceRoom {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@NaturalId(mutable = true)
|
||||
private String name;
|
||||
@NaturalId
|
||||
private String name;
|
||||
|
||||
private int capacity;
|
||||
private int capacity;
|
||||
|
||||
public ConferenceRoom(String name, int capacity) {
|
||||
this.name = name;
|
||||
this.capacity = capacity;
|
||||
}
|
||||
public ConferenceRoom(String name, int capacity) {
|
||||
this.name = name;
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
protected ConferenceRoom() {
|
||||
}
|
||||
protected ConferenceRoom() {
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public int getCapacity() {
|
||||
return capacity;
|
||||
}
|
||||
|
||||
public int getCapacity() {
|
||||
return capacity;
|
||||
}
|
||||
public void setCapacity(int capacity) {
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
public void setCapacity(int capacity) {
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HotelRoom{" +
|
||||
"id=" + id +
|
||||
", name='" + name + '\'' +
|
||||
", capacity=" + capacity +
|
||||
'}';
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HotelRoom{" + "id=" + id + ", name='" + name + '\'' + ", capacity=" + capacity + '}';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,70 +4,64 @@ import jakarta.persistence.Entity;
|
|||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
import org.hibernate.annotations.NaturalId;
|
||||
|
||||
@Entity
|
||||
public class GuestRoom {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@NaturalId
|
||||
private Integer roomNumber;
|
||||
@NaturalId
|
||||
private Integer roomNumber;
|
||||
|
||||
@NaturalId
|
||||
private Integer floor;
|
||||
@NaturalId
|
||||
private Integer floor;
|
||||
|
||||
private String name;
|
||||
private int capacity;
|
||||
private String name;
|
||||
private int capacity;
|
||||
|
||||
public GuestRoom(int roomNumber, int floor, String name, int capacity) {
|
||||
this.roomNumber = roomNumber;
|
||||
this.floor = floor;
|
||||
this.name = name;
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
public GuestRoom(int roomNumber, int floor, String name, int capacity) {
|
||||
this.roomNumber = roomNumber;
|
||||
this.floor = floor;
|
||||
this.name = name;
|
||||
this.capacity = capacity;
|
||||
}
|
||||
protected GuestRoom() {
|
||||
}
|
||||
|
||||
protected GuestRoom() {
|
||||
}
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public Integer getRoomNumber() {
|
||||
return roomNumber;
|
||||
}
|
||||
|
||||
public Integer getRoomNumber() {
|
||||
return roomNumber;
|
||||
}
|
||||
public Integer getFloor() {
|
||||
return floor;
|
||||
}
|
||||
|
||||
public Integer getFloor() {
|
||||
return floor;
|
||||
}
|
||||
public int getCapacity() {
|
||||
return capacity;
|
||||
}
|
||||
|
||||
public int getCapacity() {
|
||||
return capacity;
|
||||
}
|
||||
public void setCapacity(int capacity) {
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
public void setCapacity(int capacity) {
|
||||
this.capacity = capacity;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GuestRoom{" +
|
||||
"id=" + id +
|
||||
", roomNumber=" + roomNumber +
|
||||
", floor=" + floor +
|
||||
", name=" + name +
|
||||
", capacity=" + capacity +
|
||||
'}';
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GuestRoom{" + "id=" + id + ", roomNumber=" + roomNumber + ", floor=" + floor + ", name=" + name + ", capacity=" + capacity + '}';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid.repository;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.ConferenceRoom;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface ConferenceRoomJpaRepo extends JpaRepository<ConferenceRoom, Long> {
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid.repository;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.ConferenceRoom;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid.repository;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.GuestRoom;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface GuestRoomJpaRepo extends JpaRepository<GuestRoom, Long> {
|
||||
public interface GuestRoomJpaRepository extends JpaRepository<GuestRoom, Long> {
|
||||
}
|
|
@ -6,6 +6,6 @@ import org.springframework.data.repository.NoRepositoryBean;
|
|||
import java.util.Optional;
|
||||
|
||||
@NoRepositoryBean
|
||||
public interface NaturalIdRepository<T, ID> extends JpaRepository<T, ID> {
|
||||
Optional<T> naturalId(ID naturalId);
|
||||
public interface NaturalIdRepository<T, ID> extends JpaRepository<T, ID> {
|
||||
Optional<T> naturalId(ID naturalId);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid.repository;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.springframework.data.jpa.repository.support.JpaEntityInformation;
|
||||
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
|
||||
|
@ -11,18 +12,18 @@ import java.io.Serializable;
|
|||
import java.util.Optional;
|
||||
|
||||
public class NaturalIdRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements NaturalIdRepository<T, ID> {
|
||||
private final EntityManager entityManager;
|
||||
private final EntityManager entityManager;
|
||||
|
||||
public NaturalIdRepositoryImpl(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
|
||||
super(entityInformation, entityManager);
|
||||
this.entityManager = entityManager;
|
||||
}
|
||||
public NaturalIdRepositoryImpl(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
|
||||
super(entityInformation, entityManager);
|
||||
this.entityManager = entityManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> naturalId(ID naturalId) {
|
||||
return entityManager.unwrap(Session.class)
|
||||
.bySimpleNaturalId(this.getDomainClass())
|
||||
.loadOptional(naturalId);
|
||||
}
|
||||
@Override
|
||||
public Optional<T> naturalId(ID naturalId) {
|
||||
return entityManager.unwrap(Session.class)
|
||||
.bySimpleNaturalId(this.getDomainClass())
|
||||
.loadOptional(naturalId);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,61 +1,56 @@
|
|||
package com.baeldung.spring.data.jpa.naturalid;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.ConferenceRoom;
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.GuestRoom;
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.ConferenceRoomJpaRepo;
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.ConferenceRoomRepository;
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.GuestRoomJpaRepo;
|
||||
import jakarta.transaction.Transactional;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.ConferenceRoom;
|
||||
import com.baeldung.spring.data.jpa.naturalid.entity.GuestRoom;
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.ConferenceRoomRepository;
|
||||
import com.baeldung.spring.data.jpa.naturalid.repository.GuestRoomJpaRepository;
|
||||
|
||||
@SpringBootTest
|
||||
class NaturalIdIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private HotelRoomsService service;
|
||||
@Autowired
|
||||
private HotelRoomsService service;
|
||||
|
||||
@Autowired
|
||||
private GuestRoomJpaRepo guestRoomJpaRepo;
|
||||
@Autowired
|
||||
private ConferenceRoomJpaRepo conferenceRoomJpaRepo;
|
||||
@Autowired
|
||||
private GuestRoomJpaRepository guestRoomJpaRepository;
|
||||
@Autowired
|
||||
private ConferenceRoomRepository conferenceRoomRepository;
|
||||
|
||||
@Autowired
|
||||
private ConferenceRoomRepository conferenceRoomRepository;
|
||||
@Test
|
||||
void whenWeFindByNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
guestRoomJpaRepository.save(new GuestRoom(23, 3, "B-423", 4));
|
||||
|
||||
@Test
|
||||
void whenWeFindByNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
guestRoomJpaRepo.save(new GuestRoom(23, 3, "B-423", 4));
|
||||
Optional<GuestRoom> result = service.guestRoom(23, 3);
|
||||
|
||||
Optional<GuestRoom> result = service.guestRoom(23, 3);
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "B-423".equals(room.getName()));
|
||||
}
|
||||
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "B-423".equals(room.getName()));
|
||||
}
|
||||
@Test
|
||||
void whenWeFindBySimpleNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
conferenceRoomRepository.save(new ConferenceRoom("Colorado", 100));
|
||||
|
||||
@Test
|
||||
void whenWeFindBySimpleNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
conferenceRoomJpaRepo.save(new ConferenceRoom("Colorado", 100));
|
||||
Optional<ConferenceRoom> result = service.conferenceRoom("Colorado");
|
||||
|
||||
Optional<ConferenceRoom> result = service.conferenceRoom("Colorado");
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "Colorado".equals(room.getName()));
|
||||
}
|
||||
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "Colorado".equals(room.getName()));
|
||||
}
|
||||
@Test
|
||||
void givenNaturalIdRepository_whenWeFindBySimpleNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
conferenceRoomRepository.save(new ConferenceRoom("Nevada", 200));
|
||||
|
||||
@Test
|
||||
void givenNaturalIdRepo_whenWeFindBySimpleNaturalKey_thenEntityIsReturnedCorrectly() {
|
||||
conferenceRoomJpaRepo.save(new ConferenceRoom("Nevada", 200));
|
||||
Optional<ConferenceRoom> result = conferenceRoomRepository.naturalId("Nevada");
|
||||
|
||||
Optional<ConferenceRoom> result = conferenceRoomRepository.naturalId("Nevada");
|
||||
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "Nevada".equals(room.getName()));
|
||||
}
|
||||
assertThat(result).isPresent()
|
||||
.hasValueSatisfying(room -> "Nevada".equals(room.getName()));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue