2016-09-05 6 views
0

私はswingとJPAでプロジェクトを作成していますが、正常に動作しますが、persistence.xmlファイルなしでJPAを使用するようにこのプロジェクトを変更したいと考えています。私はいくつかの例を探していますが、まだ解決策を見つけていません。私は春には方法があるが、スイングで私は知らないことを知っている。persistence.xmlのないプロジェクトJPAをスイングしますか?

どうすればいいですか?

+1

を設定するクラス? –

+0

@NicolasFilotto私は方法が春のように構成するクラスを作成することだと思う:http://stackoverflow.com/questions/30905908/jpa-without-persistence-xml – FernandoPaiva

+0

@BillyFrost私は、 .xml'を設定し、 'persistence-unit'を設定した後、EntityManagerを返すためのJavaクラスを作成した後、正常に動作しますが、このpersistence.xmlをプログラマチックに作成する方法はありますか? – FernandoPaiva

答えて

0

私はこの問題を解決しました。 JPAは常にpersistence.xmlを必要としますが、persistence-unitを1つだけ設定して単純なpersistence.xmlを作成してから、接続やその他の値を定義するクラスを作成することができます。ここ

persistence.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.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_2_0.xsd"> 
    <persistence-unit name="default">  
    <exclude-unlisted-classes>false</exclude-unlisted-classes>  
    </persistence-unit> 
</persistence> 

、ここで私はあなたが、あなたの永続性ユニットを構成することを期待するにはどうすればよいの値

import java.util.HashMap; 
import java.util.Map; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.spi.PersistenceUnitTransactionType; 
import org.eclipse.persistence.jpa.PersistenceProvider; 
import org.eclipse.persistence.config.PersistenceUnitProperties; 

/** 
* 
* @author fernando 
*/ 
public class JPAUtils { 
    private static EntityManagerFactory emf; 
    private static final String PERSISTENCE_UNIT = "default"; 
    private static final String DB_NAME = "iguanaauto_db"; 
    public static String IP_SERVER = "127.000.000.001"; 

    /** return an entitymanagerfactory */ 
    public static EntityManagerFactory getEntityManagerFactory(){   
     if(emf == null){ 
      PersistenceProvider pp = new PersistenceProvider(); 
      Map<String, String> properties = new HashMap<String, String>();    
      properties.put(PersistenceUnitProperties.TRANSACTION_TYPE, PersistenceUnitTransactionType.RESOURCE_LOCAL.name());      
      properties.put(PersistenceUnitProperties.JDBC_DRIVER, "com.mysql.jdbc.Driver"); 
      properties.put(PersistenceUnitProperties.JDBC_URL, "jdbc:mysql://" + IP_SERVER + ":3306/" + DB_NAME + "?createDatabaseIfNotExist=true"); 
      properties.put(PersistenceUnitProperties.JDBC_USER, "root"); 
      properties.put(PersistenceUnitProperties.JDBC_PASSWORD, ""); 
      properties.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.CREATE_OR_EXTEND); 
      properties.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.DDL_DATABASE_GENERATION); 
      properties.put(PersistenceUnitProperties.LOGGING_LEVEL, "FINE");    
      emf = pp.createEntityManagerFactory(PERSISTENCE_UNIT, properties); 
     } 
     return emf; 
    } 

} 
関連する問題