<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.31.Final</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.example.MyEntity</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
</properties>
</persistence-unit>
</persistence>
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class MyEntity {
@Id
private Long id;
private String name;
}
import java.util.List;
public interface MyEntityDAO {
void save(MyEntity entity);
MyEntity findById(Long id);
List<MyEntity> findAll();
void update(MyEntity entity);
void delete(Long id);
}
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
@Repository
public class MyEntityDAOImpl implements MyEntityDAO {
@PersistenceContext
private EntityManager entityManager;
@Override
public void save(MyEntity entity){
entityManager.persist(entity);
}
@Override
public MyEntity findById(Long id){
return entityManager.find(MyEntity.class, id);
}
@Override
public List<MyEntity> findAll(){
return entityManager.createQuery("SELECT e FROM MyEntity e", MyEntity.class).getResultList();
}
@Override
public void update(MyEntity entity){
entityManager.merge(entity);
}
@Override
public void delete(Long id){
MyEntity entity = entityManager.find(MyEntity.class, id);
entityManager.remove(entity);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
@Transactional
public class MyService {
private final MyEntityDAO myEntityDAO;
@Autowired
public MyService(MyEntityDAO myEntityDAO) {
this.myEntityDAO = myEntityDAO;
}
public void saveEntity(MyEntity entity){
myEntityDAO.save(entity);
}
public MyEntity findEntityById(Long id){
return myEntityDAO.findById(id);
}
public List<MyEntity> findAllEntities(){
return myEntityDAO.findAll();
}
public void updateEntity(MyEntity entity){
myEntityDAO.update(entity);
}
public void deleteEntity(Long id){
myEntityDAO.delete(id);
}
}