Skip to content

Commit 3134c54

Browse files
author
Karolina Karolak
committed
Changes after review
1 parent b206ad7 commit 3134c54

File tree

11 files changed

+214
-150
lines changed

11 files changed

+214
-150
lines changed

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/entity/AppointmentEntity.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
import jakarta.persistence.EnumType;
1010
import jakarta.persistence.Enumerated;
1111
import jakarta.persistence.FetchType;
12+
import jakarta.persistence.GeneratedValue;
13+
import jakarta.persistence.GenerationType;
14+
import jakarta.persistence.Id;
1215
import jakarta.persistence.ManyToOne;
16+
import jakarta.persistence.SequenceGenerator;
1317
import jakarta.persistence.Table;
1418
import lombok.Getter;
1519
import lombok.Setter;
@@ -20,6 +24,11 @@
2024
@Setter
2125
public class AppointmentEntity extends BaseEntity {
2226

27+
@Id
28+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "APPOINTMENT_SEQ_GEN")
29+
@SequenceGenerator(sequenceName = "APPOINTMENT_SEQ", name = "APPOINTMENT_SEQ_GEN", allocationSize = 100, initialValue = 1)
30+
private Long id;
31+
2332
@ManyToOne(fetch = FetchType.LAZY)
2433
private ClientEntity client;
2534

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.capgemini.training.appointmentbooking.dataaccess.entity;
22

3-
import jakarta.persistence.GeneratedValue;
4-
import jakarta.persistence.GenerationType;
5-
import jakarta.persistence.Id;
3+
import java.util.Date;
4+
5+
import jakarta.persistence.Column;
66
import jakarta.persistence.MappedSuperclass;
7+
import jakarta.persistence.PrePersist;
8+
import jakarta.persistence.PreUpdate;
79
import jakarta.persistence.Version;
810
import lombok.Getter;
911
import lombok.Setter;
@@ -12,11 +14,23 @@
1214
@Getter
1315
@Setter
1416
public class BaseEntity {
15-
16-
@Id
17-
@GeneratedValue(strategy = GenerationType.IDENTITY)
18-
private Long id;
1917

2018
@Version
2119
private int version;
20+
21+
private Date created;
22+
23+
@Column(name="LAST_UPDATED")
24+
private Date lastUpdated;
25+
26+
@PrePersist
27+
public void prePersist() {
28+
setCreated(new Date());
29+
setLastUpdated(new Date());
30+
}
31+
32+
@PreUpdate
33+
public void preUpdate() {
34+
setLastUpdated(new Date());
35+
}
2236
}

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/entity/ClientEntity.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44

55
import jakarta.persistence.CascadeType;
66
import jakarta.persistence.Entity;
7+
import jakarta.persistence.FetchType;
78
import jakarta.persistence.GeneratedValue;
89
import jakarta.persistence.GenerationType;
910
import jakarta.persistence.Id;
1011
import jakarta.persistence.OneToMany;
1112
import jakarta.persistence.OneToOne;
13+
import jakarta.persistence.SequenceGenerator;
1214
import jakarta.persistence.Table;
13-
import jakarta.persistence.Version;
1415
import lombok.Getter;
1516
import lombok.Setter;
1617

@@ -20,11 +21,14 @@
2021
@Setter
2122
public class ClientEntity extends BaseEntity {
2223

23-
// review lazy, cascade only persist
24-
@OneToOne(optional = false, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
24+
@Id
25+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CLIENT_SEQ_GEN")
26+
@SequenceGenerator(sequenceName = "CLIENT_SEQ", name = "CLIENT_SEQ_GEN", allocationSize = 100, initialValue = 1)
27+
private Long id;
28+
29+
@OneToOne(optional = false, fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST })
2530
private UserEntity user;
26-
// review lazy, cascade only persist
27-
@OneToMany(mappedBy = "client", orphanRemoval=true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
31+
@OneToMany(mappedBy = "client", fetch = FetchType.LAZY, orphanRemoval=true, cascade = { CascadeType.PERSIST })
2832
private List<AppointmentEntity> appointments;
2933

3034
}

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/entity/SpecialistEntity.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import jakarta.persistence.Id;
1515
import jakarta.persistence.OneToMany;
1616
import jakarta.persistence.OneToOne;
17+
import jakarta.persistence.SequenceGenerator;
1718
import jakarta.persistence.Table;
1819
import jakarta.persistence.Version;
1920
import lombok.Getter;
@@ -23,15 +24,13 @@
2324
@Table(name="SPECIALIST")
2425
@Getter
2526
@Setter
26-
public class SpecialistEntity {
27+
public class SpecialistEntity extends BaseEntity {
2728

2829
@Id
29-
@GeneratedValue(strategy = GenerationType.IDENTITY)
30+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SPECIALIST_SEQ_GEN")
31+
@SequenceGenerator(sequenceName = "SPECIALIST_SEQ", name = "SPECIALIST_SEQ_GEN", allocationSize = 100, initialValue = 1)
3032
private Long id;
3133

32-
@Version
33-
private int version;
34-
3534
@OneToOne(optional = false, fetch = FetchType.LAZY)
3635
private UserEntity user;
3736

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/entity/TreatmentEntity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import jakarta.persistence.GenerationType;
88
import jakarta.persistence.Id;
99
import jakarta.persistence.ManyToOne;
10+
import jakarta.persistence.SequenceGenerator;
1011
import jakarta.persistence.Table;
1112
import jakarta.persistence.Version;
1213
import lombok.Getter;
@@ -18,6 +19,11 @@
1819
@Setter
1920
public class TreatmentEntity extends BaseEntity {
2021

22+
@Id
23+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TREATMENT_SEQ_GEN")
24+
@SequenceGenerator(sequenceName = "TREATMENT_SEQ", name = "TREATMENT_SEQ_GEN", allocationSize = 100, initialValue = 1)
25+
private Long id;
26+
2127
private String name;
2228

2329
private String description;

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/entity/UserEntity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.persistence.GeneratedValue;
66
import jakarta.persistence.GenerationType;
77
import jakarta.persistence.Id;
8+
import jakarta.persistence.SequenceGenerator;
89
import jakarta.persistence.Table;
910
import jakarta.persistence.Version;
1011
import lombok.Getter;
@@ -16,6 +17,11 @@
1617
@Setter
1718
public class UserEntity extends BaseEntity {
1819

20+
@Id
21+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SEQ_GEN")
22+
@SequenceGenerator(sequenceName = "USER_SEQ", name = "USER_SEQ_GEN", allocationSize = 100, initialValue = 1)
23+
private Long id;
24+
1925
private String email;
2026

2127
@Column(name="PASSWORD_HASH")

src/main/java/com/capgemini/training/appointmentbooking/dataaccess/repository/TreatmentEntityRepository.java

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 54 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,67 @@
11
CREATE TABLE USER_TABLE (
2-
ID NUMBER(19,0) NOT NULL AUTO_INCREMENT,
3-
VERSION INTEGER NOT NULL,
4-
EMAIL VARCHAR(128) NOT NULL,
5-
PASSWORD_HASH VARCHAR(128) NOT NULL,
6-
FIRST_NAME VARCHAR(128) NOT NULL,
7-
LAST_NAME VARCHAR(128) NOT NULL,
8-
PRIMARY KEY (ID),
9-
CONSTRAINT UNIQUE_USER_EMAIL UNIQUE (EMAIL)
2+
ID NUMBER(19,0) NOT NULL,
3+
VERSION INTEGER NOT NULL,
4+
EMAIL VARCHAR(128) NOT NULL,
5+
PASSWORD_HASH VARCHAR(128) NOT NULL,
6+
FIRST_NAME VARCHAR(128) NOT NULL,
7+
LAST_NAME VARCHAR(128) NOT NULL,
8+
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
9+
LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
10+
PRIMARY KEY (ID),
11+
CONSTRAINT UNIQUE_USER_EMAIL UNIQUE (EMAIL)
1012
);
1113

1214
CREATE TABLE CLIENT (
13-
ID NUMBER(19,0) NOT NULL AUTO_INCREMENT,
14-
VERSION INTEGER NOT NULL,
15-
USER_ID NUMBER(19,0) NOT NULL,
16-
PRIMARY KEY (ID),
17-
FOREIGN KEY (USER_ID) REFERENCES USER_TABLE(ID) ON DELETE CASCADE
15+
ID NUMBER(19,0) NOT NULL,
16+
VERSION INTEGER NOT NULL,
17+
USER_ID NUMBER(19,0) NOT NULL,
18+
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
19+
LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
20+
PRIMARY KEY (ID),
21+
FOREIGN KEY (USER_ID) REFERENCES USER_TABLE(ID) ON DELETE CASCADE
1822
);
1923

2024
CREATE TABLE SPECIALIST (
21-
ID NUMBER(19,0) NOT NULL AUTO_INCREMENT,
22-
VERSION INTEGER NOT NULL,
23-
SPECIALIZATION VARCHAR(128) NOT NULL,
24-
USER_ID NUMBER(19,0) NOT NULL,
25-
PRIMARY KEY (ID),
26-
FOREIGN KEY (USER_ID) REFERENCES USER_TABLE(ID) ON DELETE CASCADE
25+
ID NUMBER(19,0) NOT NULL,
26+
VERSION INTEGER NOT NULL,
27+
SPECIALIZATION VARCHAR(128) NOT NULL,
28+
USER_ID NUMBER(19,0) NOT NULL,
29+
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
30+
LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
31+
PRIMARY KEY (ID),
32+
FOREIGN KEY (USER_ID) REFERENCES USER_TABLE(ID) ON DELETE CASCADE
2733
);
2834

2935
CREATE TABLE TREATMENT (
30-
ID NUMBER(19,0) NOT NULL AUTO_INCREMENT,
31-
VERSION INTEGER NOT NULL,
32-
NAME VARCHAR(256) NOT NULL,
33-
DESCRIPTION VARCHAR(1024),
34-
DURATION_MINUTES INTEGER NOT NULL,
35-
SPECIALIST_ID NUMBER(19,0) NOT NULL,
36-
PRIMARY KEY (ID),
37-
FOREIGN KEY (SPECIALIST_ID) REFERENCES SPECIALIST(ID) ON DELETE CASCADE
36+
ID NUMBER(19,0) NOT NULL,
37+
VERSION INTEGER NOT NULL,
38+
NAME VARCHAR(256) NOT NULL,
39+
DESCRIPTION VARCHAR(1024),
40+
DURATION_MINUTES INTEGER NOT NULL,
41+
SPECIALIST_ID NUMBER(19,0) NOT NULL,
42+
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
43+
LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
44+
PRIMARY KEY (ID),
45+
FOREIGN KEY (SPECIALIST_ID) REFERENCES SPECIALIST(ID) ON DELETE CASCADE
3846
);
3947

40-
4148
CREATE TABLE APPOINTMENT (
42-
ID NUMBER(19,0) NOT NULL AUTO_INCREMENT,
43-
VERSION INTEGER NOT NULL,
44-
DATE_TIME TIMESTAMP NOT NULL,
45-
STATUS VARCHAR(128) NOT NULL DEFAULT 'SCHEDULED',
46-
CLIENT_ID NUMBER(19,0) NOT NULL,
47-
TREATMENT_ID NUMBER(19,0) NOT NULL,
48-
PRIMARY KEY (ID),
49-
FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT(ID) ON DELETE CASCADE,
50-
FOREIGN KEY (TREATMENT_ID) REFERENCES TREATMENT(ID) ON DELETE CASCADE
51-
);
49+
ID NUMBER(19,0) NOT NULL,
50+
VERSION INTEGER NOT NULL,
51+
DATE_TIME TIMESTAMP NOT NULL,
52+
STATUS VARCHAR(128) NOT NULL DEFAULT 'SCHEDULED',
53+
CLIENT_ID NUMBER(19,0) NOT NULL,
54+
TREATMENT_ID NUMBER(19,0) NOT NULL,
55+
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
56+
LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
57+
PRIMARY KEY (ID),
58+
FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT(ID) ON DELETE CASCADE,
59+
FOREIGN KEY (TREATMENT_ID) REFERENCES TREATMENT(ID) ON DELETE CASCADE
60+
);
61+
62+
-- CREATING SEQUENCES
63+
CREATE SEQUENCE USER_SEQ START WITH 1 INCREMENT BY 100 NOCYCLE;
64+
CREATE SEQUENCE CLIENT_SEQ START WITH 1 INCREMENT BY 100 NOCYCLE;
65+
CREATE SEQUENCE SPECIALIST_SEQ START WITH 1 INCREMENT BY 100 NOCYCLE;
66+
CREATE SEQUENCE TREATMENT_SEQ START WITH 1 INCREMENT BY 100 NOCYCLE;
67+
CREATE SEQUENCE APPOINTMENT_SEQ START WITH 1 INCREMENT BY 100 NOCYCLE;

0 commit comments

Comments
 (0)