Ejb3-bean entité : relations bidirectionnelles

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 265 fois - Téléchargée 15 fois

Contenu du snippet

Ce code vous permet de réaliser une relation bidirectionnelle entre deux entités évitant ainsi les exceptions LazyLoadingException et SaxException de cycles infinis.

Source / Exemple :


// Client.java entité référençant une table de la bdd Oracle.
@Entity
@Table(name = "CLIENT")
@SequenceGenerator (
name="SEQ_CLIENT",
sequenceName="SEQ_CLIENT",
   initialValue = 1
  )
public class Client implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_CLIENT")
    @Column(name = "ID")
    private Long id;

    @Column(name = "LOGIN", length = 25, nullable = false)
    private String login;

    @Column(name = "PASSWORD", length = 25, nullable = false)
    private String password;

    @OneToMany(mappedBy = "idClients")
    private List<Reservationbilletavion> idClientCA;

    /* setters et getters et constructeurs */
}   

// Reservationbilletavion .java entité référençant une table de la bdd Oracle.
@Entity
@Table(name = "RESERVATIONBILLETAVION")
@SequenceGenerator (
name="SEQ_RESERVATION_BA",
sequenceName="SEQ_RESERVATION_BA",
   initialValue = 1
  )
public class Reservationbilletavion implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_RESERVATION_BA")
    @Column(name = "ID_RESERVATION_CA")
    private Long idReservationBa;  
    
    @JoinColumn(name = "ID_CLIENT", referencedColumnName = "ID")
    @ManyToOne
    private Client idClients;

    /* setters et getters et constructeurs */

    @XmlTransient // pour éviter les cycles, on isole le getter
    public Client getIdClient() {
        return idClients;
    }
}
// logique métier ClientImplement.java

@Stateless(mappedName="edtc.dao.client")
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ClientImplement implements IDaoClientLocal, IDaoClientRemote{ // implémente des interfaces métier
    
    @PersistenceContext
    private EntityManager em;

public Client getAllReservationById(int idClient) {
        Client cl = null;
         try {
         // les des réservations de billets d'avions
          cl =  (Client) em.createQuery("SELECT c " +
                                        "FROM Client c " +
                                        "WHERE c.id =:ID"
                                  ).setParameter("ID",  (long) idClient)
                                 .getSingleResult();
          
            
            cl.getIdClientCA().size(); // charger la collection
        
          } catch (Throwable th) {
            throw new edtcException(th, 1);
          }
        return cl;
     
    }

}

// web service WsClientDaoJpa.java
@WebService
public class WsClientDaoJpa implements IDaoClient{

    @EJB
    private IDaoClientLocal dao;

    @WebMethod
    public Client getAllReservationById(int idClient) {
        return dao.getAllReservationById(idClient);
    }

   
}

Conclusion :


Ce code source n'est pas très complets, il faut y rajouter des getters et setters ainsi que les interfaces souhaités.

A voir également

Ajouter un commentaire

Commentaires

azmi11
Messages postés
2
Date d'inscription
dimanche 23 mai 2010
Statut
Membre
Dernière intervention
23 mai 2010
-
et commant je peut réaliser la partie client(jsf) car l'editeu n'accepte pas IDaoClient donc il n'a pas comprie qu'il sagie d'un service web
SoftDeath
Messages postés
20
Date d'inscription
samedi 9 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2010
-
Pour la partie cliente, c'est à toi de gérer cela ;) :
- Générer le fichier wsdl ;
- L'importer chez le client ;
- Exploiter les informations du serveur.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.