Postgres database connection for Spring app (Java 21)

Dependencies:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>


Properties short way:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/custom_database
username: postgres
password: password
# if you want your app to auto create tables on start:
# jpa:
# hibernate:
# ddl-auto: create


And a little more advanced:
spring:
jpa:
properties:
hibernate:
jdbc:
time_zone: UTC
datasource:
url: jdbc:postgresql://localhost:5432/custom_database
username: postgres
password: password
hikari:
connection-timeout: 30000
maximum-pool-size: 100
minimum-idle: 10
idle-timeout: 60000
max-lifetime: 120000
auto-commit: true


Extras


Example entity:
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.time.LocalDateTime;
@Entity
@Table(name = "task")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column
private String description;
@Column(nullable = false)
private int priority;
@Column
private LocalDateTime deadline;
@Column(nullable = false, length = 63)
private String userId;
@Column(nullable = false)
private String status;
}


Example Repo:
import com.example.todoapp.domain.entity.Task;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
public interface TaskRepository extends JpaRepository<Task, Long> {
Optional<Task> findByIdAndUserIdAndStatus(Long id, String actualUserId, String name);
List<Task> findTasksByUserIdAndStatusOrderByPriorityDesc(String actualUserId, String name);
}


Popular posts

My Ubuntu Desktop config

Enabling Gnome Extensions

Basic AKHQ running with docker (HTTP)