Upload
vortexbird
View
179
Download
5
Embed Size (px)
Citation preview
ORMJPASpringFrameworkDiegoArmandoGómezMosquera.
Agenda
• ArquitecturadeSpring• Hibernate• SpringORM• SpringTransactionmanagement
ArquitecturadeSpring
QueesSpringORM• Soporte proporcionado por Spring para integrarsecon una gran variedad de Mapeadores objetorelacionales (ORM)– JPA– Hiberante– iBATIS– TopLink– ApacheOJB– JDO
SpringORM
• SpringintegradoconunORMcomoJPAproporcionalassiguientescaracterísticas.– AdministracióndeentityManager– Administraciónderecursos(entityManagerFactory)– Administracióndetransaccionesintegradas.– AdministracióndeDataSource.– Envolverexcepciones
SpringORM
• APIsBásicasJPA– org.springframework.orm.jpa– org.springframework.orm.jpa.persistenceunit– org.springframework.orm.jpa.support– org.springframework.orm.jpa.vendor
SpringORM<?xmlversion="1.0"encoding="UTF-8"?><beans>
<beanid="entityManagerFactory"class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"><propertyname="persistenceUnitName"value="demoBancoJPA"/>
</bean>
<beanid="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager"><propertyname="entityManagerFactory"ref="entityManagerFactory"/>
</bean>
<tx:annotation-driventransaction-manager="transactionManager"/></beans>
SpringTransactionmanagement
• Cuentaconunsoprteextensoparamanejodetransacciones– ProgramaticaconJTA– ProgramaticaconTransactionTemplate– DeclarativaconTransactionAdvice– Declarativacon@TransactionAnnotation
SpringTransactionmanagement
• Soporteparadiferentescomportamientos– REQUIRED– REQUIRES_NEW– SUPPORTS– NOT_SUPPORTS–MANDATORY– NEVER– NESTED
SpringTransactionmanagement
• Nivelesdeaislamientosoportados– DEFAULT– READ_UNCOMMITTED– READ_COMMITTED– REPEATABLE_READ– SERIALIZABLE
DAO@Repository@Scope("singleton")public class ClientesDAO implements IClientesDAO {
@PersistenceContextprivate EntityManager entityManager;
@Overridepublic void grabar(Clientes clientes) {
entityManager.persist(clientes);}
@Overridepublic void modificar(Clientes clientes) {
entityManager.merge(clientes);}
@Overridepublic void borrar(Clientes clientes) {
entityManager.remove(clientes);}
@Overridepublic Clientes consultarPorId(long cliId) {
return entityManager.find(Clientes.class, cliId);}
@Overridepublic List<Clientes> consultarTodos() {
String jpql="SELECT cli FROM Clientes cli";return entityManager.createQuery(jpql).getResultList();
}
}
Laboratorio
Construccióndeaplicación
• Tecnologías:• HibernateJPA• SpringORM• DAO• SpringTransactionconanotacione