私はEjb3とJPAを使用しています(現時点ではHibernateとOracle 10gに基づいています)
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;
}
次に、このタイプのエンティティを保存します。
現在、私は次のことを行っています完全に
ExampleEntity exampleEntity = new ExampleEntity();
exampleEntity.setSomeText(Hibernate.createClob(aStringValue));
someOtherDao.save(exampleEntity);
ただし、これによりコードがHibernateに関連付けられます。ここまでは特にHibernate拡張を避け、JPAアノテーションのみを使用しました。実際、Hibernateが現在の実装なので、コードは機能します。
一般的な方法でCLOBを作成できるようにする、なんらかのJPA APIはありますか?では、後でToplink/EclipseLinkなどに切り替えることにした場合、変更する必要はありませんか?
そのような例がJPA仕様(§9.1.5)です。
@Column(name="DESC",
columnDefinition="CLOB NOT NULL",
table="EMP_DETAIL")
@Lob
public String getDescription() { return description; }
CLOBの標準的な方法だと思います。