CompanyDao.java

package training_center.dao;

import java.util.List;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import training_center.entity.Company;

@Repository
@Transactional
public class CompanyDao {
    @PersistenceContext
    private EntityManager entityManager;

    public void save(Company company) {
        entityManager.persist(company);
    }

    @Transactional(readOnly = true)
    public Company findById(Long id) {
        return entityManager.find(Company.class, id);
    }

    @Transactional(readOnly = true)
    public List<Company> findAll() {
        return entityManager.createQuery(
                "select c from Company c order by c.name",
                Company.class
        ).getResultList();
    }

    public void update(Company company) {
        entityManager.merge(company);
    }

    public void delete(Company company) {
        entityManager.remove(entityManager.merge(company));
    }

    public void deleteById(Long id) {
        Company company = findById(id);
        if (company != null) {
            entityManager.remove(company);
        }
    }
}