Making an HR software with Spring Boot Part III
Published: 2020-10-12 14:04:49

Right, now we have managed to come up with a database of sorts. What we need to do is to initiate the project, and implement the database, correct? So, we'll head over to [start.spring.io](https://start.spring.io) to initialize our project.

![Image goes here](https://dev-to-uploads.s3.amazonaws.com/i/hv7z9dp0ur309cg0618y.png)

Let me say something in a bit. 
First off, I really don't like gradle so I'll use maven instead. Another thing, please do pay attention to the java version down there. Use Java 8, it works ...

After clicking generate, the project should be downloaded as a zip file. Open the project using your favorite editor ( *mine is intellij idea* )

The project should like this:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/zehu9qhvs1m5pgil6kq6.png)

Last time I had an argument of sorts with a workmate/acquaintance of mine over project folder structures. To be fairly honest, at the end of the day, it depends on your preference. If you feel like my folder structure is weird ... then good for you!

Anyway, I normally use the following structure:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1s37585r6qhfm9sb2vef.png)

I love this structure because it creates a separation of concerns. Models have their own folder, DTOs have their own folder and controllers have their own folders ... and so on. Like I said earlier, it's just a matter of preference.

Anyway, stupid things aside, now we are going to be implementing the models. First, we'll start with the Employee model. Java is object oriented, which means that everything is an object ... eh ... I'm sure you understand.

To be honest, I'm very lazy. As most lazy people do, I'm going to use lombok instead of defining getters and setters manually.

Anyway, before we get into that, we need to open the application.properties under src > main > resources and put the database configurations there.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/c73afqxra4ususofq2yt.png)
 
When done with that, let's get into defining the model. Under the models package, create a new file called Employee.java. The initial code, before defining the relationships, looks like the following:

```java

package com.dull.piqued.models;

import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import javax.persistence.*;
import java.util.Date;

@Getter
@Setter
@Entity
@Table(name = "employees")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, updatable = false)
    private long ecNumber;

    @Column(nullable = false)
    private String firstname;

    @Column(nullable = false)
    private String lastname;

    @Column(nullable = false, unique = true)
    private String email;

    @Column(nullable = false, unique = true)
    private String phone;

    @Column(nullable = false)
    private String physicalAddress;

    @Column
    private double salary;

    @Column
    private Date hireDate;

    @CreationTimestamp
    private Date createdAt;

    @UpdateTimestamp
    private Date updatedAt;

}
```

Now, I'll explain what the code does in the next tutorial... chao :wave: