Hibernate...Duvida uso do TopLink

Olá pessoal,

algumas duvidas peguei o exemplo abaixo mas pintou umas duvidas :

  • Por que usar esse toplink da Oracle e estou jogando drive,url da MYSQL isso
    não entendi pois futuramente vou usar pra outros bancos ??? o que fazer ???

  • Tentei usar a persistencia local conforme abaixo e não fez o que a persistencia
    exemploJPA estava fazendo por que ???

  • Toda vez que rodo o main ele cria a tabela de novo tem como fazer pra criar uma unica vez ???

Se puderem me ajudar agradeço ???

abs




<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  
  <persistence-unit name="exemploJPA" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>br.com.exemplojpa.modelo.Usuario</class>
    <properties>
      <property name="toplink.logging.level" value="INFO"/>
      <property name="toplink.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/exemplojpa"/>
      <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="toplink.jdbc.user" value="root"/>
      <property name="toplink.jdbc.password" value="root"/>
      <property name="toplink.ddl-generation" value="create-tables"/> 
    </properties>
  </persistence-unit>
  
  
  <persistence-unit name="local" transaction-type="RESOURCE_LOCAL" >
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>br.com.exemplojpa.modelo.Usuario</class>
    <properties>
      <property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver" />
      <property name="hibernate.connection.url"  value="jdbc:mysql://localhost:3306/exemplojpa" />
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>
  </persistence-unit>
  
</persistence>


----
public class UsuarioDAO {

	private EntityManagerFactory factory = null;

	private EntityManager manager = null;

	public UsuarioDAO() {

		factory = Persistence.createEntityManagerFactory("exemploJPA");
		manager = factory.createEntityManager();

	}

	/**
	 * Inserindo um usuário
	 * 
	 * @param usuario
	 */
	public void inserirUsuario(Usuario usuario) {

		EntityTransaction transaction = manager.getTransaction();

		try {
			transaction.begin();

			manager.persist(usuario);

			transaction.commit();

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());

		} finally {
			manager.close();
		}

	}

	/**
	 * Pesquisar um usuário
	 * 
	 * @param usuario
	 */
	public Usuario pesquisarUsuario(Integer id, Usuario usuario) {
		EntityTransaction transaction = manager.getTransaction();

		Usuario retorno = null;

		try {

			transaction.begin();

			retorno = (Usuario) manager.find(Usuario.class, id);

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());
		} finally {
			manager.close();
		}

		return retorno;

	}

}
----
public class TesteExemploJPA {

	public static void main(String[] args) {

		/*
		 * Criando o objeto usuário
		 */
		Usuario usuario = new Usuario();
		
		usuario.setLogin("rafael");
		usuario.setPassword("123456");
		usuario.setNome("Rafael Carneiro");

		/*
		 * Instanciando a classe de negócio
		 */
		UsuarioBusiness usuarioBusiness = new UsuarioBusiness();

		/*
		 * Inserindo um usuário no banco
		 */
		usuarioBusiness.inserirUsuario(usuario);

		/*
		 * Pesquisando o usuário inserido no banco
		 */

		Usuario usuarioBanco = new Usuario();

		usuarioBanco = usuarioBusiness.pesquisarUsuario(usuario);

		/*
		 * Mostrando o resultado da consulta no banco
		 */
		System.out.println();
		System.out.println("         Exemplo JPA         ");
		System.out.println("Id: " + usuarioBanco.getId());
		System.out.println("Login: " + usuarioBanco.getLogin());
		System.out.println("Senha: " + usuarioBanco.getPassword());
		System.out.println("Nome: " + usuarioBanco.getNome());

	}

}

O toplink é só pra fazer a persistencia no banco poderia ser o hibernate no lugar
Para cada banco Oracle, MySql, SqlServer etc… vc vai precisar deu um driver jdbc correspondente

deixe seu persistence.xml assim:

 <?xml version="1.0" encoding="UTF-8"?>  
 <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"   
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">  
     
   <persistence-unit name="exemploJPA" transaction-type="RESOURCE_LOCAL">  
     <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>  
     <class>br.com.exemplojpa.modelo.Usuario</class>  
     <properties>  
       <property name="toplink.logging.level" value="INFO"/>  
       <property name="toplink.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/exemplojpa"/>  
       <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>  
       <property name="toplink.jdbc.user" value="root"/>  
       <property name="toplink.jdbc.password" value="root"/>  
       <property name="toplink.ddl-generation" value="create-tables"/>   
     </properties>  
   </persistence-unit>  

Testa ai…

Não entendi a parte referente ao drive

pois está na lib do meu projeto o jar da mysql :

mysql-connector-java-5.0.0-beta-bin

pois queria usar MySQL como faço ???

outra duvida no MYSQL posso usar esse provider tem para MYSQL se sim como faço ???


&lt;provider&gt;oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider&lt;/provider&gt;    

[quote=paribe]Não entendi a parte referente ao drive

pois está na lib do meu projeto o jar da mysql :

mysql-connector-java-5.0.0-beta-bin

pois queria usar MySQL como faço ???[/quote]

Eu quis dizer que além do driver do seu banco (no caso MySql) precisa do jar do toplink para fazer a persistencia

onde encontro esse toplink para MYSQL ou Hibernate pra fazer isso ???

pode me ajudar ???