..
Under henvisning til eksemplet med det foregående afsnit, ser vi, hvordan du opretter DAO for virksomhedens bil.
Først og fremmest creaimo en grænseflade med metoder baseret på en DAO, nemlig: Indlæse, gemme, opdatering og sletning.
it.mrwebmaster.hibernate.dao pakke;
it.mrwebmaster.hibernate.Car import;
{Public-grænsefladen CarDao
offentlige bil belastning (Integer id);
spare på de offentlige Car (bil bil);
Opdater offentlige Car (bil bil);
public void fjern (Car bil);
}
Oprettet grænseflade passere i skabelsen af implementeringen:
it.mrwebmaster.hibernate.dao pakke;
it.mrwebmaster.hibernate.Car import;
javax.persistence.EntityManager import;
javax.persistence.PersistenceContext import;
org.springframework.transaction.annotation.Transactional import;
@ Transactional
CarDaoImpl {public class implementerer CarDao
@ PersistenceContext (unitName = "kan")
private EntityManager em;
@ Override
public void fjern (Car bil) {
em.remove (char);
}
@ Override
@ Transactional (skrivebeskyttet = true)
offentlige bil belastning (Integer id) {
tilbage em.find (Car.class, id);
}
@ Override
spare på de offentlige Car (bil bil) {
em.persist (char);
returnere bilen;
}
@ Override
Opdater offentlige Car (bil bil) {
em.merge afkast (tegn);
}
public void setEm (EntityManager em) {
this.em = em;
}
getEm offentlige EntityManager () {
tilbage p;
}
}
og endelig i 'applicationContext.xml:
<-! CAR DAO -> <bean id="carDaoImpl" class="it.mrwebmaster.hibernate.dao.CarDaoImpl" />
Som det kan ses at gennemføre DAO nost vi har brug for EntityManager, som sprøjtes direkte fra os "gennem brug af IOC annotationer @ PersistenceContext.
Den implementeringer af hver metode er trivielle, simpelthen uddelegere arbejdet all'EntityManager.
Med hensyn til transaktionen ledelse, valgt at udnytte den @ Transactional annotation.
Dette gør det muligt for forår for at skabe den instans af vores DAO vil bruge en proxy, hvis job det er at åbne og lukke transaktionen før opkaldet til en metode, og umiddelbart efter 'exit fra selve metoden gør et begå eller en tilbagerulning i tilfælde af fejl.
Bemærk, endelig, er brugen af @ Transactional for Skrivebeskyttet nell'annotation belastning metode, derved skabte en overgang read-only.
Denne transaktion ledelse sker gennem brug af AOP, så den blot tilføje til vores applicazionContext.xml:
<-! Transaction Management -> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </ Bean> <tx:annotation-driven transaction-manager="transactionManager" />
| |
Linux (Kursus)
Komplet guide til open source-system. Fra 49 €. |
| |
PHP (Kursus)
Fuld kursus for at skabe dynamiske web-sites. Fra 49 €. |
| |
Ruby og Ruby on Rails (Kursus)
Opret software og web-applikationer med Ruby og RoR. Fra 39 €. |