Gyms organization application with spring boot and angular part 1

Getting Started | Building an Application with Spring Boot






Build an application gyms with Spring boot and Angular use Jpa

In this tutorial, we are going create a project gyms organization to display all the gyms that content name, address, city, area, logo and the Work time object has a timetable, day, start time, end time , Sportsmen and Sport. the Sport object content name, description and photo as will we add a trainer and arbitrate for each sport or gym material. the sportman can subscribe to many sports and pay his payment in the payment object we find the cost, day and duration.


Tools to be used

° Use any IDE to develop the Spring and Hibernate project. It may be STS/Eclipse/Netbeans. Here, we are using STS (Spring Tool Suite).

° Mysql for the database.

° Use any IDE to develop the Angular project. It may be Visual Studio Code/Sublime. Here, we are using Visual Studio Code.

° Server: Apache Tomcat/JBoss/Glassfish/Weblogic/Websphere.


Spring MVC

Spring MVC is the primary web framework built on the Servlet API. It is build on the popular MVC design pattern. MVC (Model-View-Controller) is a software architecture pattern, which separates application into three areas: model, view, and controller. The model represents a Java object carrying data. The view represents the visualization of the data that the model contains. The controller controls the data flow into model object and updates the view when the data changes. It separates the view and model.


Spring Boot Architecture



Spring Boot is a module of the Spring Framework. It is used to create stand-alone, production-grade Spring Based Applications with minimum efforts. It is developed on top of the core Spring Framework.



Introduction mysql to database

MySQL is a database management system that allows you to manage relational databases. It is open source software backed by Oracle. It means you can use MySQL without paying a dime. Also, if you want, you can change its source code to suit your needs. MySQL can run on various platforms UNIX, Linux, Windows, etc. You can install it on a server or even in a desktop. Besides, MySQL is reliable, scalable, and fast.



Introduction to the POM

POM A Project Object Model or POM is the fundamental unit of work in Maven. It is an XML file that contains information about the project and configuration details used by Maven to build the project. It contains default values for most projects. Examples for this is the build directory, which is target; the source directory, which is src/main/java; the test source directory, which is src/main/java; and so on. When executing a task or goal, Maven looks for the POM in the current directory. It reads the POM, gets the needed configuration information, then executes the goal.

pom.xml

    
  
  
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0>/modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/> </parent> <groupId>com.gym</groupId> <artifactId>gym</artifactId> <version>0.0.1-SNAPSHOT</version> <name>gym</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>ma.glasnost.orika</groupId> <artifactId>orika-core</artifactId> <version>1.5.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

Properties File

Properties files are used to keep ‘N’ number of properties in a single file to run the application in a different environment. In Spring Boot, properties are kept in the application.properties file under the classpath.

The application.properties file is located in the src/main/resources directory. The code for sample application.properties


We need to create database name it gym

src/main/resources/application.properties

    
  
spring.datasource.url=jdbc:mysql://localhost:3306/gym?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC spring.datasource.username=root spring.activemq.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.ddl-auto=create-drop server.port=8080

Class Diagram



First We Will Create a package model inside it We will add 8 Classes

- Arbitrate
- Gym
- Payment
- Sport
- SportsMan
- Train
- User
- Worktime

Here, we are creating an Entity

Arbitrate.java This object content id, name, and relational @ManyToOne with Sport and Gym

src/main/java/com/gym/model/Arbitrate.java):



package com.gym.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Arbitrate { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @ManyToOne private Sport sport; @ManyToOne private Gym gym; public Arbitrate() { super(); } public Arbitrate(String name, Sport sport, Gym gym) { super(); this.name = name this.sport = sport this.gym = gym } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Sport getSport() { return sport; } public void setSport(Sport sport) { this.sport = sport; } public Gym getGym() { return gym; } public void setGym(gym gym) { this.gym = gym; } }

Here, we are creating an Entity

Gym.java This Object content id, name, address, area, logo, and relational @OneToMany Worktime, Sport, Arbitrate and Train We need four methods addWorktime, addSportForGym, addArbitrate, addTrain

src/main/java/com/gym/model/Gym.java):



package com.gym.model; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Gym { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; private String address; private String city; private int area; private String logo; @OneToMany(cascade = CascadeType.ALL, mappedBy = "gym") private List<Worktime> worktimes; @OneToMany(cascade = CascadeType.ALL, mappedBy = "gym") private List<Sport> sports; @OneToMany(cascade = CascadeType.ALL, mappedBy = "gym") private List<Arbitrate> arbitrates; @OneToMany(cascade = CascadeType.ALL, mappedBy = "gym") private List<Train> trains; public Gym() { super(); } public Gym(String name, String address, String city, int area, String logo, List<Worktime> worktimes, List<Sport> sports, List<Arbitrate> arbitrates, List<Train> trains) { super(); this.name = name; this.address = address; this.city = city; this.area = area; this.logo = logo; this.worktimes = worktimes; this.sports = sports; this.arbitrates = arbitrates; this.trains = trains; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public int getArea() { return area; } public void setArea(int area) { this.area = area; } public String getLogo() { return logo; } public void setLogo(String logo) { this.logo = logo; } public List<Worktime> getWorktimes() { return worktimes; } public void setWorktimes(List<Worktime> worktimes) { this.worktimes = worktimes; } public List<Sport> getSports() { return sports; } public void setSports(List<Sport> sports) { this.sports = sports; } public List<Arbitrate> getArbitrates() { return arbitrates; } public void setArbitrates(List<Arbitrate> arbitrates) { this.arbitrates = arbitrates; } public List<Train> getTrains() { return trains; } public void setTrains(List<Train> trains) { this.trains = trains; } public void addWorktime(Worktime worktime) { if (getWorktimes()==null) { this.worktimes = new ArrayList≷>(); } getWorktimes().add(worktime); worktime.setGym(this); } public void addSportForGym(Sport sport) { if(getSports()==null) { this. sports = new ArrayList<>(); } getSports().add(sport); sport.setGym(this); } public void addArbitrate(Arbitrate arbitrate) { if (getArbitrates()==null) { this. arbitrates = new ArrayList<>(); } getArbitrates().add(arbitrate); arbitrate.setGym(this); } public void addTrain(Train train) { if (getTrains()==null) { this. trains = new ArrayList<>(); } getTrains().add(train); train.setGym(this); } }

Here, we are creating an Entity

Payment.java This object content id, cost, date, duration and relational @ManyToOne with SportsMan

src/main/java/com/gym/model/Payment.java):



package com.gym.model; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class Payment { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private double cost; @Temporal(TemporalType.TIMESTAMP) private Date date; private String duration; @ManyToOne private SportsMan sportsMan; public Payment() { super(); } public Payment(double cost, Date date, String duration, SportsMan sportsMan) { super(); this.cost = cost; this.date = date; this.duration = duration; this.sportsMan = sportsMan; } public long getId() { return id; } public void setId(long id) { this.id = id; } public double getCost() { return cost; } public voidsetCost(double cost) { this.cost = cost; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public SportsMan getSportsMan() { return sportsMan; } public voidsetSportsMan(SportsMan sportsMan) { this.sportsMan = sportsMan; } }

Here, we are creating an Entity

Sport.java This object content id, name, and relational @ManyToOne with SportsMan and Gym another relational @OneToMany with Arbitrate and Train We need create two methods addArbitrate, addTrain

src/main/java/com/gym/model/Sport.java):



package com.gym.model; import java.util.ArrayList; import java.util.List; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @Entity public class Sport { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; private String description; private String photo; @ManyToOne private SportsMan sportsMan; @ManyToOne private Gym gym; @OneToMany(mappedBy = "sport") private List<Arbitrate> arbitrates; @OneToMany(mappedBy = "sport") private List<Train> trains; public Sport() { super(); } public Sport(String name, String description, String photo, SportsMan sportsMan, List<Arbitrate> arbitrates, List<Train> trains, Gym gym) { super(); this.name = name; this.description = description; this.photo = photo; this.sportsMan = sportsMan; this.arbitrates = arbitrates; this.trains = trains; this.gym = gym; } public long getId() { return id; } public voidsetId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public SportsMan getSportsMan() { return sportsMan; } public void setSportsMan(SportsMan sportsMan) { this.sportsMan = sportsMan; } public Gym getGym() { return gym; } public void setGym(Gym gym) { this.gym = gym; } public List<Arbitrate> getArbitrates() { return arbitrates; } public voidsetArbitrates(List<Arbitrate> arbitrates) { this.arbitrates = arbitrates; } public List<Train> getTrains() { return trains; } public void setTrains(List<Train> trains) { this.trains = trains; } public void addArbitrate(Arbitrate arbitrate) { if (getArbitrates()==null) { this.arbitrates = new ArrayList<>(); } getArbitrates().add(arbitrate); arbitrate.setSport(this); } public void addTrain(Train train) { if (getTrains()==null) { this.trains = new ArrayList<>(); } getTrains().add(train); train.setSport(this); } }

Here, we are creating an Entity

SportsMan .java This object content id, firstName, lastName, age, sex, avatar, and relational @ManyToOne Worktime and another relational @OneToMany with Sport and Payment

We need to create two methods addSport and addPayment

src/main/java/com/gym/model/SportsMan .java):



package com.gym.model; private java.util.ArrayList; private java.util.List; private javax.persistence.CascadeType; private javax.persistence.Entity; private javax.persistence.GeneratedValue; private javax.persistence.GenerationType; private javax.persistence.Id; private javax.persistence.ManyToOne; private javax.persistence.OneToMany; @Entity public class SportsMan { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String firstName; private String lastName; private int age; private String sex; private String avatar; @ManyToOne private Worktime Worktime; @OneToMany(cascade = CascadeType.ALL, mappedBy = "sportsMan") private List<Sport> sports; @OneToMany(cascade = CascadeType.ALL, mappedBy = "sportsMan") private List<Payment> payments; public SportsMan() { super(); } public SportsMan(String firstName, String lastName, int age, String sex, String avatar, Worktime worktime, List<Sport> sports, List<Payment> payments) { super(); this.firstName = firstName; this.lastName = lastName; this.age = age; this.sex = sex; this.avatar = avatar; this.Worktime = worktime; this.sports = sports; this.payments = payments; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public Worktime getWorktime() { return Worktime; } public void setWorktime(Worktime worktime) { this.Worktime = worktime; } public List<Sport> getSports() { return sports; } public voidsetSports(List<Sport> sports) { this.sports = sports; } public List<Payment> getPayments() { return payments; } public voidsetPayments(List<Payment> payments) { this.payments = payments; } public void addSport(Sport sport) { if (getSports()==null) { this.sports = new ArrayList<>(); } getSports().add(sport); sport.setSportsMan(this); } public void addPayment(Payment payment) { id (getPayments()==null) { this.payments = new ArrayList<>(); } getPayments().add(payment); payment.setSportsMan(this); } }

Here, we are creating an Entity

Train.java This object content id, name, and relational @ManyToOne with Sport and Gym

src/main/java/com/gym/model/Train.java):



package com.gym.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Train { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @ManyToOne private Sport sport; @ManyToOne private Gym gym; public Train() { super(); } public Train(String name, Sport sport, Gym gym) { super(); this.name = name this.sport = sport this.gym = gym } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Sport getSport() { return sport; } public void setSport(Sport sport) { this.sport = sport; } public Gym getGym() { return gym; } public void setGym(gym gym) { this.gym = gym; } }

Here, we are creating an Entity

User.java This object content id, username, password and isAdmin

src/main/java/com/gym/model/User.java):



package com.gym.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String username; private String password; private boolean isAdmin; public User() { super(); } public User(String username, String password, boolean isAdmin) { super(); this.username = username this.password = password this.isAdmin = isAdmin } 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 boolean isAdmin() { return isAdmin; } public void setAdmin(boolean isAdmin) { this.isAdmin = isAdmin; } }

Here, we are creating an Entity

Worktime.java This object content id, day, timetable, start, end and relational @ManyToOne with Gym and another relational @OneToMany with SportsMam.

We need to create one method addSportsManForWork

src/main/java/com/gym/model/Worktime.java):



package com.gym.model; private java.util.ArrayList; private java.util.Date; private java.util.List; private javax.persistence.Entity; private javax.persistence.GeneratedValue; private javax.persistence.GenerationType; private javax.persistence.Id; private javax.persistence.ManyToOne; private javax.persistence.OneToMany; private javax.persistence.Temporal; private javax.persistence.TemporalType; @Entity public void Worktime { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String day; @Temporal(TemporalType.DATE) private Date timetable; private String start; private String end; @ManyToOne private Gym gym; @OneToMany(mappedBy = "Worktime") private List<SportsMan> sportsMans; public Worktime() { super(); } public Worktime(String day, Date timetable, String start, String end, Gym gym, List<SportsMan> sportsMans) { super(); this.day = day; this.timetable = timetable; this.start = start; this.end = end; this.gym = gym; this.sportsMans = sportsMans; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getDay() { return day; } public void setDay(String day) { this.day = day; } public Date getTimetable() { return timetable; } public void setTimetable(Date timetable) { this.timetable = timetable; } public String getStart() { return start; } public void setStart(String start) { this.start = start; } public String getEnd() { return end; } public void setEnd(String end) { this.end = end; } public Gym getGym() { return gym; } public void setGym(Gym gym) { this.gym = gym; } public List<SportsMan> getSportsMans() { return sportsMans; } public voidsetSportsMans(List<SportsMan> sportsMans) { this.sportsMans = sportsMans; } public void addSportsManForWork(SportsMan sportsMan) { if (getSportsMans()==null) { this. sportsMans = new ArrayList<>(); } getSportsMans().add( sportsMan); sportsMan.setWorktime(this); } }

OrikaBeanMapper

Orika is a Java Bean mapping framework that recursively copies data from one object to another. It can be very useful when developing multi-layered applications. While moving data objects back and forth between these layers it is common to find that we need to convert objects from one instance into another to accommodate different APIs.


OrikaBeanMapper.java In this class Orika to convert entity => DTO / DTO => entity

src/main/java/com/gym/model/OrikaBeanMapper.java):



package com.gym.model; import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.impl.ConfigurableMapper; import ma.glasnost.orika.impl.DefaultMapperFactory; import ma.glasnost.orika.impl.generator.JavassistCompilerStrategy; import ma.glasnost.orika.metadata.ClassMapBuilder; import ma.glasnost.orika.unenhance.HibernateUnenhanceStrategy; import java.util.List; import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; @Component public class OrikaBeanMapper extends ConfigurableMapper { private MapperFactory factory; public OrikaBeanMapper() { super(false); init(); } /** * {@inheritDoc} */ @Override protected void configure(MapperFactory factory) { this.factory = factory; } private void registerClassMap(Class a, Class b) { this.factory.classMap(a, b).mapNulls(true).mapNullsInReverse(true).byDefault().register(); } /** * Register class map with fields to exclude * * @param a * @param b * @param excludeFields */ private void registerClassMap(Class a, Class b, String... excludeFields) { ClassMapBuilder builder = this.factory.classMap(a, b); for (String excludeField : excludeFields) { builder.exclude(excludeField); } builder.mapNulls(true).mapNullsInReverse(true).byDefault().register(); } /** * {@inheritDoc} */ @Override protected void configureFactoryBuilder(final DefaultMapperFactory.Builder factoryBuilder) { factoryBuilder.compilerStrategy(new JavassistCompilerStrategy()); factoryBuilder.unenhanceStrategy(new HibernateUnenhanceStrategy()); } /** * User Orika to convert entity => DTO / DTO => entity * * @param from * @param toClass * @param <T> * @param <U> return */ public <T, U> T convertDTO(U from, Class<T> toClass) { if (from == null) { return null; } return map(from, toClass); } /** * User Orika to convert entity => DTO / DTO => entity * * @param from * @param toClass * @param <T> * @param <U> * @return */ public <T, U> List<T> convertListDTO(Iterable<U> from, Class<T> toClass) { if (from == null) { return null; } return mapAsList(from, toClass); } public <T, U> Page<T> convertPageDTO(Page<U> from, Class<T> toClass) { if (from == null) { return null; } return from.map(entity -> factory.getMapperFacade().map(entity, toClass)); } }

The DTO Classes

- ArbitrateDto
- GymDto
- PaymentDto
- SportDto
- SportsManDto
- TrainDto
- UserDto
- WorktimeDto

We'll handle the conversions that need to happen between the internal entities of a Spring application and the external DTOs (Data Transfer Objects) that are published back to the client.

ArbitrateDto.java

src/main/java/com/gym/dto/ArbitrateDto.java):



package com.gym.dto; public class ArbitrateDto { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

GymDto.java

src/main/java/com/gym/dto/GymDto.java):



package com.gym.dto; import java.util.List; public class GymDto { private long id; private String name; private String address; private String city; private int area; private String logo private List<WorktimeDto> worktimes; private List<SportDto> sports; private List<ArbitrateDto> arbitrates; private List<TrainDto> trains; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public int getArea() { return area; } public void setArea(int area) { this.area = area; } public String getLogo() { return logo; } public void setLogo(String logo) { this.logo = logo; } public List<WorktimeDto> getWorktimes() { return worktimes; } public void setWorktimes(List<WorktimeDto> worktimes) { this.worktimes = worktimes; } public List<SportDto> getSports() { return sports; } public void setSports(List<SportDto> sports) { this.sports = sports; } public List<ArbitrateDto> getArbitrates() { return arbitrates; } public void setArbitrates(List<ArbitrateDto> arbitrates) { this.arbitrates = arbitrates; } public List<TrainDto> getTrains() { return trains; } public void setTrains(List<TrainDto> trains) { this.trains = trains; } }

PaymentDto.java

src/main/java/com/gym/dto/PaymentDto.java):



package com.gym.dto; import java.util.Date; public class PaymentDto { private long id; private double cost; private Date date; private String duration; public long getId() { return id; } public void setId(long id) { this.id = id; } public double getCost() { return cost; } public voidsetCost(double cost) { this.cost = cost; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } }

SportDto.java

src/main/java/com/gym/dto/SportDto.java):



package com.gym.dto; public class SportDto { private long id; private String name; private String description; private String photo; private List<ArbitrateDto> arbitrates; private List<TrainDto> trains; public long getId() { return id; } public voidsetId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public List<ArbitrateDto> getArbitrates() { return arbitrates; } public void setArbitrates(List<ArbitrateDto> arbitrates) { this.arbitrates = arbitrates; } public List<TrainDto> getTrains() { return trains; } public void setTrains(List<TrainDto> trains) { this.trains = trains; } }

SportsManDto.java

src/main/java/com/gym/dto/SportsManDto.java):



package com.gym.dto; private java.util.List; public class SportsManDto { private long id; private String firstName; private String lastName; private int age; private String sex; private String avatar; private List<SportDto> sports; private List<PaymentDto> payments; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public List<SportDto> getSports() { return sports; } public voidsetSports(List<SportDto> sports) { this.sports = sports; } public List<PaymentDto> getPayments() { return payments; } public voidsetPayments(List<PaymentDto> payments) { this.payments = payments; } }

TaainDto.java

src/main/java/com/gym/dto/TaainDto.java):



package com.gym.dto; public class TrainDto { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

WorktimeDto.java

src/main/java/com/gym/dto/WorktimeDto.java):



package com.gym.dto; private java.util.Date; private java.util.List; public void WorktimeDto { private long id; private String day; private Date timetable; private String start; private String end; private List<SportsManDto> sportsMans; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getDay() { return day; } public void setDay(String day) { this.day = day; } public Date getTimetable() { return timetable; } public void setTimetable(Date timetable) { this.timetable = timetable; } public String getStart() { return start; } public void setStart(String start) { this.start = start; } public String getEnd() { return end; } public void setEnd(String end) { this.end = end; } public List<SportsManDto> getSportsMans() { return sportsMans; } public voidsetSportsMans(List<SportsManDto> sportsMans) { this.sportsMans = sportsMans; } }

JPA Repositories

The JPA module of Spring Data contains a custom namespace that allows defining repository beans. It also contains certain features and element attributes that are special to JPA. Generally, the JPA repositories can be set up by using the repositories element, as shown in the following example:


Spring Repositories Spring has supported the concept of a repository for some time now. Repository is one of Spring's core stereotypes and you should plan on using them in your data access layer, regardless of your chosen data access layer API and framework.


Here, we are creating an interface

ArbitrateDao.java

src/main/java/com/gym/dao/ArbitrateDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Arbitrate; @Repository public interface ArbitrateDao extends JpaRepository<Arbitrate, Long> { }

Here, we are creating an interface

GymDao.java

src/main/java/com/gym/dao/GymDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Gym; @Repository public interface GymDao extends JpaRepository<Gym, Long> { }

Here, we are creating an interface

PaymentDao.java

src/main/java/com/gym/dao/PaymentDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Payment; @Repository public interface PaymentDao extends JpaRepository<Payment, Long> { }

Here, we are creating an interface

SportDao.java

src/main/java/com/gym/dao/SportDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Sport; @Repository public interface SportDao extends JpaRepository<Sport, Long> { }

Here, we are creating an interface

SportsManDao.java

src/main/java/com/gym/dao/SportsManDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.SportsMan; @Repository public interface SportsManDao extends JpaRepository<SportsMan, Long> { }

Here, we are creating an interface

TrainDao.java

src/main/java/com/gym/dao/SportsManDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Train; @Repository public interface TrainDao extends JpaRepository<Train, Long> { }

Here, we are creating an interface

UserDao.java

src/main/java/com/gym/dao/UserDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.User; @Repository public interface UserDao extends JpaRepository<User, Long> { }

Here, we are creating an interface

WorktimeDao.java

src/main/java/com/gym/dao/WorktimeDao.java):



package com.gym.dao; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gym.model.Worktime; @Repository public interface WorktimeDao extends JpaRepository<Worktime, Long> { }

Conclusion

Now we have an overview of Spring Boot CRUD example when building an App with clean architect. we have also added Service Components and OrikaBeanMapper

We also take a look at client-server architecture for REST API using Spring Web MVC & Spring Data JPA, as well, we are gooing to continue with Angular 10 project structure for building a front-end app to make HTTP requests and consume responses.





Post a Comment

Previous Post Next Post


Follow us on facebook