From dc36b620a5629b86554ebd613628bdf20aec857f Mon Sep 17 00:00:00 2001 From: user Date: Mon, 21 Sep 2026 18:32:54 +0400 Subject: [PATCH] feat(user-service): add JPA User entity and configure Spring Data JPA --- second-part/hw-02/user-service/pom.xml | 31 +++++- .../src/main/java/com/example/User.java | 94 +++++++++++++++++++ 2 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 second-part/hw-02/user-service/src/main/java/com/example/User.java diff --git a/second-part/hw-02/user-service/pom.xml b/second-part/hw-02/user-service/pom.xml index 4fe90dc..85b2ba4 100644 --- a/second-part/hw-02/user-service/pom.xml +++ b/second-part/hw-02/user-service/pom.xml @@ -1,8 +1,16 @@ - 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 4.1.1 + + + com.example user-service 1.0-SNAPSHOT @@ -29,28 +37,40 @@ + org.junit.jupiter junit-jupiter-api test + + org.junit.jupiter junit-jupiter-params test + + + org.springframework.boot + spring-boot-starter-data-jpa + + - + - + maven-clean-plugin 3.4.0 - + maven-resources-plugin 3.3.1 @@ -75,7 +95,8 @@ maven-deploy-plugin 3.1.2 - + maven-site-plugin 3.12.1 diff --git a/second-part/hw-02/user-service/src/main/java/com/example/User.java b/second-part/hw-02/user-service/src/main/java/com/example/User.java new file mode 100644 index 0000000..fc415c6 --- /dev/null +++ b/second-part/hw-02/user-service/src/main/java/com/example/User.java @@ -0,0 +1,94 @@ +package com.example; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.PrePersist; +import jakarta.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 100) + private String name; + + @Column(nullable = false, unique = true, length = 255) + private String email; + + @Column(nullable = false) + private Integer age; + + @Column(name = "created_at", nullable = false, updatable = false) + private LocalDateTime createdAt; + + protected User() {} + + public User(String name, String email, Integer age) { + this.name = name; + this.email = email; + this.age = age; + } + + @PrePersist + protected void onCreate() { + createdAt = LocalDateTime.now(); + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public Integer getAge() { + return age; + } + + public LocalDateTime getCreatedAt() { + return createdAt; + } + + public void setName(String name) { + this.name = name; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setAge(Integer age) { + this.age = age; + } + + @Override + public String toString() { + return "User{" + + "id=" + + id + + ", name='" + + name + + '\'' + + ", email='" + + email + + '\'' + + ", age=" + + age + + ", createdAt=" + + createdAt + + '}'; + } +}