Connecting Database to Java progam

By: zigmoid
Posted on: 02/21/2024

Connecting a database to a Java program typically involves the following steps:


1. Add JDBC Driver Dependency

For Maven projects, add the appropriate database driver dependency in pom.xml. Example for MySQL:

xmlCopyEdit<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

For PostgreSQL:

xmlCopyEdit<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.3.8</version>
</dependency>

2. Load the Driver and Establish Connection

Use JDBC (Java Database Connectivity) to connect to the database.

Example: MySQL Connection

javaCopyEditimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DatabaseConnection {
    public static void main(String[] args) {
        // Database URL, Username, and Password
        String url = "jdbc:mysql://localhost:3306/your_database"; // Change `your_database`
        String user = "root";
        String password = "your_password";

        // Establish Connection
        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM your_table")) {

            System.out.println("Connected to the database!");

            // Process the Result Set
            while (rs.next()) {
                System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3. Using Connection Pooling (Recommended for Real Projects)

Instead of creating a new connection for every request, use a connection pool like HikariCP.

Maven Dependency for HikariCP

xmlCopyEdit<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

HikariCP Connection Pool Example

javaCopyEditimport com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class HikariCPExample {
    private static HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        config.setUsername("root");
        config.setPassword("your_password");
        config.setMaximumPoolSize(10); // Max connections in pool
        dataSource = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void main(String[] args) {
        try (Connection conn = getConnection()) {
            System.out.println("Connected using HikariCP!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4. Connecting Database in Spring Boot (If Needed)

If you’re using Spring Boot, just configure application.properties:

propertiesCopyEditspring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.maximum-pool-size=10
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update

With Spring Data JPA, define an entity and a repository:

Entity Class

javaCopyEditimport jakarta.persistence.*;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;

    // Getters and setters
}

Repository Interface

javaCopyEditimport org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

Service to Fetch Data

javaCopyEditimport org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}