..
谈到前款的例子,我们看看如何创建DAO到实体车。
加载,保存,更新和删除:所有creaimo与一个DAO接口方法,即根据第一。
it.mrwebmaster.hibernate.dao包;
it.mrwebmaster.hibernate.Car进口;
{公共接口CarDao
公共停车场负荷(整数ID);
节省公共车(汽车车);
更新公共车(车车);
公共无效删除(车车);
}
在实施创建创建界面通过:
it.mrwebmaster.hibernate.dao包;
it.mrwebmaster.hibernate.Car进口;
javax.persistence.EntityManager进口;
javax.persistence.PersistenceContext进口;
org.springframework.transaction.annotation.Transactional进口;
@事务
CarDaoImpl {公共类实现CarDao
@ PersistenceContext(的unitName =“可以”)
私人EntityManager的EM;
@覆盖
公共无效删除(车车){
em.remove(字符);
}
@覆盖
@事务(只读= TRUE)
公共停车场负荷(整数ID){
返回em.find(Car.class,ID);
}
@覆盖
节省公共车(汽车车){
em.persist(字符);
返回车;
}
@覆盖
更新公共车(车车){
em.merge回报(字符);
}
公共无效setEm(EntityManager的EM){
this.em = EM;
}
getEm公众的EntityManager(){
返回P;
}
}
在“applicationContext.xml中最后:
< - CAR DAO - > <bean id="carDaoImpl" class="it.mrwebmaster.hibernate.dao.CarDaoImpl" />
可以看出,以实现我们需要的DAO NOST EntityManager的,这是直接从我们注入通过IoC的注解@ PersistenceContext用“。
每种方法的实现是微不足道的,只是委托工作all'EntityManager。
至于事务管理,却偏偏要使用@ Transactional注释。
这允许Spring来创建我们的DAO实例将使用代理,其任务是打开和关闭前调用的方法和交易后,立即从方法本身做一个提交或回滚 ,以防“退出错误。
请注意,最后,该交易为只读 nell'annotation @ load方法在这样做,使用已经创建了一个过渡只读。
本次交易的管理是通过AOP的使用,使这只是增加我们的applicazionContext.xml:
< - 交易管理 - > <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 物权name="entityManagerFactory" ref="entityManagerFactory" /> </豆> <tx:annotation-driven transaction-manager="transactionManager" />
| |
Linux操作系统(课程)
完整指南开源系统。 从49€。 |
| |
PHP(课程)
全部课程用于创建动态Web站点。 从49€。 |
| |
Ruby和Ruby on Rails的(课程)
创建Ruby和RoR的软件和Web应用程序。 从39€。 |