本文主要比较一下二者操作实体类的方法的关系和区别。
本文适用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE 。
创建方式
Session:
Configuration configuration=new Configuration().configuration();
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry);
Session session=factory.openSession();
Transaction transaction=session.beginTransaction();
//to do sth.
transaction.commit();
session.cose();
sessionFactory.close();
EntityManager:
EntityManagerFactory entityManagerFactory=Persistence.createEntityManagerFactory("persistenceUnitName");
EntityManager entityManager=entityManagerFactory.createEntityManager();
EntityTransaction entityTransaction=entityManager.createEntityTransaction();
entityTransaction.begin();
//to do sth.
entityTransaction.commit();
entityManager.close();
entityManagerFactory.close();
二者的联系
SessionFactory 对应 EntityManagerFactory;
Session 对应 EntityManager;
SessionFactory是线程安全的,Session不是线程安全的;
EntityManager 是线程安全的;
关于配置文件
Hibernate需要一个配置文件:hibernate.xml,文件在classpath可以访问即可。
JPA需要一个persistence.xml,文件必须是META/persistence.xml
如果整合Spring的话,就让他们随风去吧。
方法对比
session的方法:
flush()
evict()
load()
save()
saveOrUpdate()
update()
merge()
persist()
delete()
refresh()
get()
EntityManager的方法:
persist()
merge()
remove()
find()
flush()
refresh()
detach()
getReference()
原文:https://blog.youkuaiyun.com/54powerman/article/details/61196215