#1
This guide shows how to integrate Hibernate with Apache Derby in a Spring Boot project to map entities and manage data easily.

1. Add Dependencies

In pom.xml:
<dependency>
  <groupId>org.apache.derby</groupId>
  <artifactId>derby</artifactId>
  <scope>runtime</scope>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>org.hibernate.orm</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>6.4.4.Final</version>
</dependency>

2. Configure Derby and Hibernate

In application.properties:
spring.datasource.url=jdbc:derby:memory:demoDB;create=true
spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DerbyDialect

3. Create Entity

import jakarta.persistence.*;

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

    private String name;
    private String role;

    // getters and setters
}

4. Repository

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

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

5. Service with Hibernate Example

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@Service
public class EmployeeService {
    @PersistenceContext
    private EntityManager em;

    @Transactional
    public void saveEmployee(Employee e) {
        em.persist(e);
    }

    public List<Employee> getAllEmployees() {
        return em.createQuery("from Employee", Employee.class).getResultList();
    }
}

6. REST Controller

import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/employees")
public class EmployeeController {
    private final EmployeeService service;

    public EmployeeController(EmployeeService service) {
        this.service = service;
    }

    @PostMapping
    public String add(@RequestBody Employee e) {
        service.saveEmployee(e);
        return "Employee saved!";
    }

    @GetMapping
    public List<Employee> all() {
        return service.getAllEmployees();
    }
}

7. Test

Run Spring Boot:
mvn spring-boot:run
Add employee:
curl -X POST http://localhost:8080/employees -H "Content-Type: application/json" -d '{"name":"Alice","role":"Developer"}'
Get employees:
curl http://localhost:8080/employees

image quote pre code