web-dev-qa-db-fra.com

Comment créer un Clob dans JPA d'une manière indépendante de l'implémentation

J'utilise Ejb3 et JPA (basé sur Hibernate et Oracle 10g pour le moment)

J'ai une entité qui contient un clob

@Entity
@Table(name = "My_TAB")
public class ExampleEntity implements Java.io.Serializable {

    private Clob someText;

    public void setSomeText(Clob someText) {
        this.someText= someText;
    }

    @Column(name = "COLUMN_NAME")
    public Clob getSomeText() {
        return this.someText;
    }

Ensuite, je veux enregistrer une entité de ce type.

En ce moment, je fais ce qui suit qui fonctionne parfaitement

ExampleEntity exampleEntity = new ExampleEntity();
exampleEntity.setSomeText(Hibernate.createClob(aStringValue));
someOtherDao.save(exampleEntity);

Cependant, cela lie mon code à Hibernate! Jusqu'à présent, j'ai spécifiquement évité les extensions Hibernate et utilisé uniquement les annotations JPA. Le code fonctionne car en effet Hibernate est mon implémentation actuelle.

Existe-t-il une sorte d'API JPA qui me permet de créer un clob de manière générique? Donc, si plus tard, je décide de passer à Toplink/EclipseLink ou à autre chose, je n'aurai rien à changer?

24
kazanaki

Il y a un tel exemple est la spécification JPA (§ 9.1.5)

@Column(name="DESC", 
columnDefinition="CLOB NOT NULL", 
table="EMP_DETAIL") 
@Lob 
public String getDescription() { return description; }

Je pense que c'est la méthode standard pour CLOB.

42
ewernli