viernes, 31 de agosto de 2007

JPA o DaoSupport ?

Con Spring se puede implementar la persistencia con JPA, aprovechando las annontations:
bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"

Luego, los accesos en los dao, se hacen genéricos a través del entityManager, pero los métodos son reducidos y no tenemos la potencialidad de hibernate para consultas más flexibles.

Sino, la alternativa de heredar de HibernateDaoSupport de Spring pero al parecer no se pueden usar las annotations de persistencia por lo que las entidades deben mapearse en un xml aparte, externo al .java con los problemas de cambios que conlleva. Para está opción en el xml, el bean sessionFactory que se cablea en dicha clase:
bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"

jueves, 23 de agosto de 2007

Hibernate Exception (library)

Al correr fuera de eclipse, parece haber incompatibilidad de jars, la clase perdida se encuentra en un jar dentro del classpath....

Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator
(ASTQueryTranslatorFactory.java:35)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:74)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCa
che.java:72)

Existe algun problema de versiones con antlr, corregido con otra version del jar.

martes, 14 de agosto de 2007

BLOB type Hibernate

Algo de lectura http://www.hibernate.org/56.html para LOB data in hibernate.

miércoles, 8 de agosto de 2007

JPA queries

Los métodos de la interface EntityManager de JPA no tienen la busqueda byExample de Hibernate.

martes, 7 de agosto de 2007

JPA Exception (detached)

Al momento de persistir un objeto:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist


Debido a la annotation @GeneratedValue en el pojo, el campo referenciado debe estar vacio, se generará a través del JPA Vendor.
Sacando esta notación la inserción se hizo sin problemas.

lunes, 6 de agosto de 2007

JPA

XML descriptor
En JPA no es necesario que las entidades estén listadas en un descriptor xml (ej persistence.xml), es posible mapear las clases directamente a través de las notaciones (@Entity, @Id, ...) dispuestas en los POJOS.

viernes, 3 de agosto de 2007

Spring JPA

La clase PersistenceAnnotationBeanPostProcessor
sdf es la que procesa las anotaciones PersistenceUnit and PersistenceContext para injectar los recursos JPA correspondientes (EntityManagerFactory y EntityManager).

Hibernate & Spring

JPA Entities Id

Caso Entity Cabecera, id consiste en codigo (String) + version (number)
Un string puede ser id?