diff --git a/infrastructure/pom.xml b/infrastructure/pom.xml
new file mode 100644
index 0000000..7c4c555
--- /dev/null
+++ b/infrastructure/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ ms-library
+ org.example
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ infrastructure
+
+
+
+ org.example
+ domain
+ ${project.version}
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ com.h2database
+ h2
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.mapstruct
+ mapstruct
+ 1.4.2.Final
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.4.2.Final
+
+
+ org.projectlombok
+ lombok
+ 1.18.12
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/infrastructure/src/main/java/org/example/adapters/BookJpaAdapter.java b/infrastructure/src/main/java/org/example/adapters/BookJpaAdapter.java
new file mode 100644
index 0000000..51cca68
--- /dev/null
+++ b/infrastructure/src/main/java/org/example/adapters/BookJpaAdapter.java
@@ -0,0 +1,59 @@
+package org.example.adapters;
+
+import org.example.entity.Book;
+import org.example.mappers.BookMapper;
+import org.example.repository.BookRepository;
+import org.exemple.data.BookDto;
+import org.exemple.ports.spi.BookPersistencePort;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class BookJpaAdapter implements BookPersistencePort {
+
+ @Autowired
+ private BookRepository bookRepository;
+
+ @Override
+ public BookDto addBook(BookDto bookDto) {
+
+ Book book = BookMapper.INSTANCE.bookDtoToBook(bookDto);
+
+ Book bookSaved = bookRepository.save(book);
+
+ return BookMapper.INSTANCE.bookToBookDto(bookSaved);
+ }
+
+ @Override
+ public void deleteBookById(Long id) {
+ bookRepository.deleteById(id);
+ }
+
+ @Override
+ public BookDto updateBook(BookDto bookDto) {
+ return addBook(bookDto);
+ }
+
+ @Override
+ public List getBooks() {
+
+ List bookList = bookRepository.findAll();
+
+ return BookMapper.INSTANCE.bookListToBookDtoList(bookList);
+ }
+
+ @Override
+ public BookDto getBookById(Long bookId) {
+
+ Optional book = bookRepository.findById(bookId);
+
+ if (book.isPresent()) {
+ return BookMapper.INSTANCE.bookToBookDto(book.get());
+ }
+
+ return null;
+ }
+}
diff --git a/infrastructure/src/main/java/org/example/entity/Book.java b/infrastructure/src/main/java/org/example/entity/Book.java
new file mode 100644
index 0000000..5419dbb
--- /dev/null
+++ b/infrastructure/src/main/java/org/example/entity/Book.java
@@ -0,0 +1,29 @@
+package org.example.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Book {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String title;
+
+ private String description;
+
+ private Double price;
+}
diff --git a/infrastructure/src/main/java/org/example/mappers/BookMapper.java b/infrastructure/src/main/java/org/example/mappers/BookMapper.java
new file mode 100644
index 0000000..5e25b6e
--- /dev/null
+++ b/infrastructure/src/main/java/org/example/mappers/BookMapper.java
@@ -0,0 +1,22 @@
+package org.example.mappers;
+
+import org.example.entity.Book;
+import org.exemple.data.BookDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface BookMapper {
+
+ BookMapper INSTANCE = Mappers.getMapper(BookMapper.class);
+
+ BookDto bookToBookDto(Book book);
+
+ Book bookDtoToBook(BookDto bookDto);
+
+ List bookListToBookDtoList(List bookList);
+
+ List BookDtoListTobookList(List BookDtoList);
+}
diff --git a/infrastructure/src/main/java/org/example/repository/BookRepository.java b/infrastructure/src/main/java/org/example/repository/BookRepository.java
new file mode 100644
index 0000000..11e67e9
--- /dev/null
+++ b/infrastructure/src/main/java/org/example/repository/BookRepository.java
@@ -0,0 +1,10 @@
+package org.example.repository;
+
+import org.example.entity.Book;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface BookRepository extends JpaRepository {
+
+}