<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping><classname="Cliente"table="cliente"><idname="id"column="cliente_id"type="long"unsaved-value="null"><generatorclass="increment"/></id><propertyname="nome"type="string"length="100"/></class></hibernate-mapping>
No contexto de EJB, utilizando o persistence.xml, como eu faria este mapeamento? (sem utilizar anotações na classe). Algo assim:
<persistencexmlns="http://java.sun.com/xml/ns/persistence"version="1.0"><persistence-unitname="TestEJB"><jta-data-source>java:/MySqlDS_test</jta-data-source><properties><propertyname="hibernate.hbm2ddl.auto"value="create-drop"/></properties><class>entidades.Cliente</class><!-- AQUI ENTRARIAM AS CUSTOMIZAÇÕES QUE PRECISO, COMO NOME DA COLUNA... SEMELHANTE AO ARQUIVO DE MAPEAMENTO DO HIBERNATE --></persistence-unit></persistence>
Posso fazer o mapeamento como faço em Hibernate, porém no persistence.xml?
“If you do not want to use annotations to identify and map your entity beans, you can alternatively use an XML mapping file to declare this metadata. By default, the persistence provider will look in the META-INF directory for a file named orm.xml, or you can declare the mapping file in the element in the persistence.xml deployment descriptor.”
Sendo assim, seu mapeamento de entidades sem utilizar anotações ficaria mais ou menos assim:
Parece que ele está querendo fazer o mapeamento utilizando JPA (EJB 3.0+). Este link que vc postou mostra configurações próprias do Hibernate.
brccosta,
Faltou responder outra pergunta que vc fez. No seu persistence.xml vc deve utilizar apenas tags definidas no schema (http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd) que define a estrutura do arquivo. Sendo assim, vc tem fazer o mapeamento utilizando as tags do JPA. É possível setar algumas propriedades próprias da implementação que estiver sendo utilizada (Hibernate, por ex.), mas creio que não seja possível para efeitos de mapeamento de entidades.
Caso estiver errado, alguém me corrija por favor.
Att.
brccosta
Obrigado Marcelo e André.
Marcelo,
Fiz como falou, criei um arquivo Cliente.xml na pasta META-INF, configurei, pus a tag Cliente.xml no persistence.xml, porém ocorre o erro:
javax.persistence.PersistenceException: [PersistenceUnit: TestEJB] Unable to find XML mapping file in classpath: Cliente.xml
Tem alguma idéia?
marcelocenerine
brccosta,
Dentro do META-INF vc colocaria se fosse o orm.xml. Coloque esse arquivo Cliente.xml dentro da pasta source (src).
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping><classname="Cliente"table="cliente"><idname="id"column="cliente_id"type="long"unsaved-value="null"><generatorclass="increment"/></id><propertyname="nome"type="string"length="100"/></class></hibernate-mapping>
No contexto de EJB, utilizando o persistence.xml, como eu faria este mapeamento? (sem utilizar anotações na classe). Algo assim:
<persistencexmlns="http://java.sun.com/xml/ns/persistence"version="1.0"><persistence-unitname="TestEJB"><jta-data-source>java:/MySqlDS_test</jta-data-source><properties><propertyname="hibernate.hbm2ddl.auto"value="create-drop"/></properties><class>entidades.Cliente</class><!-- AQUI ENTRARIAM AS CUSTOMIZAÇÕES QUE PRECISO, COMO NOME DA COLUNA... SEMELHANTE AO ARQUIVO DE MAPEAMENTO DO HIBERNATE --></persistence-unit></persistence>
Posso fazer o mapeamento como faço em Hibernate, porém no persistence.xml?