JPA介绍
前面介绍过JPA是sun在JDK5中引入的JPA ORM规范,其目的在于整合ORM技术,统一规范和标准。目前比较成熟的JPA框架主要包括Jboss的HibernateEntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache的OpenJPA等。下面将以Hibernate为例介绍JPA的使用。
使用Hibernate EntityManager
Hibernate本身是独立于spring的,如果不使用spring框架,则Dao层的代码如下所示,这时还需要一个标准的persistence.xml
配置文件
public class UserDaoImpl implements UserDao {
public AccountInfo save(AccountInfo accountInfo) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("SimplePU"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); em.persist(accountInfo); em.getTransaction().commit(); emf.close(); return accountInfo; } }
使用spring + Hibernate
如果在项目中引入了spring,spring对JPA提供了很友好的支持,可以使用自动注入而不是手动new实现类,配置也更为灵活,最主要的是Spring将EntityManager的创建与销毁、事务管理等代码抽取出来,并由其统一管理。事务管理和 EntityManager 创建、销毁的代码都不再需要开发者关心了。
持久层代码:
@Repository("userDao")
public class UserDaoImpl implements UserDao { @PersistenceContext private EntityManager em; @Transactional public Long save(AccountInfo accountInfo) { em.persist(accountInfo); return accountInfo.getAccountId(); } }
配置文件:
<?xml version="1.0" encoding=