Bonjour,

avec la jdk 1.6, la methode traditionnelle de creation de blob hibernate est dépréciée, cela fonctionne donc à merveille mais avant que cette méthode ne soit plus du tout supportée, je souhaiterai faire évoluer mon code vers la bonne version ....

Voici donc la méthode que j'utilise habituellement pour stocker de grands textes dans un champs Blob :


Je précise que cette méthode est statique !
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
17
18
19
 
        /**
         * String to blob.
         * 
         * @param contenu the contenu
         * 
         * @return the blob
         */
	@SuppressWarnings("deprecation")
	public static Blob stringToBlob(String contenu){
		Blob blob=null;
 
		try {
			blob=Hibernate.createBlob(contenu.getBytes());
		} catch (Exception e) {
			log.error("Erreur de Cast [String To Blob]!");
		}
		return blob; 
	}
D'après ce que j'ai pu lire à droite et à gauche sur le net la nouvelle façon de créer des Blobs nécessite de disposer de la session hibernate en cours....

Or je ne parviens pas à l'injecter dans mes ejb ....
Y a t il une annotation similaire à '@PersistenceContext', imaginons '@SessionContext' qui permettrait de récupérer la session en cours dans un ejb session ??

L'idéal serait évidemment de disposer d'une méthode statique du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SessionUtil.getCurrentSession();



Pour expliquer un peu plus ma situation, voici comment je récupère mon entityManager :
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
@Stateless
@Repository
public class DataRepositoryProducer implements DataRepositoryProducerLocal {
    
    private EntityManager entityManager;
    
    public EntityManager getEntityManager() {
        return entityManager;
    }
    
    @PersistenceContext(unitName="ariane")
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }
}
le nom 'ariane' renvoit à ce qui est défini dans persistence.xml (ci-dessous) :
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
 
<persistence-unit name="ariane" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider> 
        <jta-data-source>jdbc/ariane</jta-data-source>
        <properties>
            <property name="hibernate.dialect"
                      value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.transaction.flush_before_completion" value="true" />
            <property name="hibernate.connection.autocommit" value="false" />
            <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
 
 
        </properties>
</persistence-unit>
Dois je déclarer ma session hibernate dans ce fichier xml ?
Comment ?

Si quelqu'un dispose d'un peu d'expérience dans ce domaine, toute aide utile sera la bienvenue ....