我对SessionFactory
,EntityManager
和JpaRepository
感到困惑。我与SessionFactory一起工作,当多个请求why need to make sessionfactory到来时,它有助于减轻服务器的负担。为此,我使用了DaoImpl类。
DaoImpl类
@Repository
public class StudentDaoImpl implements StudentDao{
@Autowired
private SessionFactory sessionFactory;
@Override
public void saveOrUpdate(Student student) {
sessionFactory.getCurrentSession().saveOrUpdate(student);
}
}
现在,我尝试将 SpringBoot 2 与 jpa存储库一起使用。以下代码可以正常工作。
StudentRepository界面
@Repository
public interface StudentRepository extends JpaRepository<Student, Integer>{
}
StudentService界面
public interface StudentService {
void save(Student student)
}
StudentServiceImpl类
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
@Autowired
StudentRepository studentRepository;
@Override
public void save(Student student) {
studentRepository.save(student);
}
}
很少有引用说如果我们使用EntityManager Why use an entity manager会更好。如果我要使用EntityManager,希望代码如下
@PersistenceContext
protected EntityManager entityManager;
public void save(Student student){
em.getTransaction().begin();
if (!em.contains(student)) {
em.persist(student);
em.flush();
}
em.getTransaction().commit();
}
我的问题是,由于我不将SessionFactory或EntityManager与jpa存储库一起使用,因此它完美地将数据存储在数据库中。我需要使用实体管理器吗?我不能使用Sessionfactory吗?如果同时有多个请求,jpa存储库会处理吗?有什么好的做法?
谢谢。