Peut on faire des EJB pour une application swing qui communique avec une base sans serveur d'application jboss & co? Question bête j'avais prévenu.








Peut on faire des EJB pour une application swing qui communique avec une base sans serveur d'application jboss & co? Question bête j'avais prévenu.
ça m'étonnerait... EJB nécessite un conteneur EJB sur un serveur
Par contre, avec Hibernate, on peut...
A+
Avec Java EE 5 et JPA (Java Persistence API), on peut.
Un exemple (via NetBeans, mais je pense facilement transposable dans n'importe quel éditeur vu qu'il suffit de rajouter quelques jars dans le classpath): http://www.netbeans.org/kb/55/persistence-j2se.html
Valère
je suis surpris j'ai tenté de faire touner hibernate avec application server 9. Même en rajoutant les jars dans le classpath sous netbeans. Cela n'as pas fonctionné.
J'ai juste commencé à jouer avec cette semaine, et pour moi ça a marché du premier coup (j'ai utilisé toplink).
Les librairies à rajouter sont javaee.jar de glassfish, + toplink-essentials.jar et toplink-essentials-agent.jar.
D'ailleur je pense que je vais faire un petit billet dessus ce WE![]()








Avec JPA (la partie Persistence des EJB 3.0) il est tout a fait possible d'utiliser cette API en dehors d'un conteneur d'EJB.
J'ai testé avec l'implémentation Hibernate, cela marche c'est juste un peu galère pour trouver ce qu'il y a faire.
Normalement, on ne crée qu'une seule fois l'EntityManagerFactory (cela est couteux). Mais on peut utiliser plusieurs EntityManager (attention l'EntityManger n'est pas thread safe).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Sample est le nom de la persistence unit définit dans persistence.xml emf = Persistence.createEntityManagerFactory("sample"); em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Adresse monAdresse=new Adresse(); monAdresse.setPays("FRANCE"); em.persist(monAdresse); tx.commit(); em.close(); emf.close();
Mon persistence.xml
Le point important est le transaction type qui doit être de type local.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL"> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="create"/> <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/> <property name="hibernate.connection.username" value="sa"/> <property name="hibernate.connection.password" value=""/> <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/jpatest"/> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence>
Pour plus de détail : http://jl2tho.blogspot.com/2007/08/t...jb-entite.html
Partager