UNIDADE DE PERSISTÊNCIA COM VALORES DINAMICOS

Java

13/10/2014

Boa tarde gostaria de saber, como poderia fazer para o valores definido no meu arquivo de persistências tais como usuário, senha e host fosse feito de forma dinâmica, ou seja, em um arquivo de txt ou properties.
John Lima

John Lima

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

13/10/2014

Bom, se você usa um persistence.xml para realizar tais configuração, você deve usar ele e não há como criar um "txt" auxiliar para preencher esses campos. A única forma é definir o seu persistence.xml programaticamente, ou seja, em vez de criar o XML você define tudo direto no Java, neste caso você pode fazer a leitura de um txt ou qualquer outro arquivo e definir suas configurações de forma dinâmica.
GOSTEI 0
John Lima

John Lima

13/10/2014

como seria ?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

13/10/2014

Veja este exemplo:

public static EntityManager createEntityManager() {
	Properties properties = new Properties();
	properties.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence");
	properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL");
	properties.put("hibernate.connection.username", "sa");
	properties.put("hibernate.connection.password" ,"");
	properties.put("hibernate.connection.driver_class","org.hsqldb.jdbcDriver");			
	properties.put("hibernate.connection.url", "jdbc:hsqldb:." );
	properties.put("hibernate.dialect" ,"org.hibernate.dialect.HSQLDialect");
	properties.put("hibernate.hbm2ddl.auto","create-drop");
	properties.put("hibernate.show_sql","true");
	properties.put("hibernate.format_sql" ,"true");	
	//
	Ejb3Configuration cfg = new Ejb3Configuration();
	cfg.addProperties(properties);
	cfg.addAnnotatedClass(City.class);
	cfg.addAnnotatedClass(LocalCustomer.class);
	//
	EntityManagerFactory factory = cfg.buildEntityManagerFactory();
	return factory.createEntityManager();
}
GOSTEI 0
John Lima

John Lima

13/10/2014

Entedir Ronaldo, então meu factory não iria receber mais um Persistence.createEntityManageFactory e sim cfg.buildEntityManagerFactory(). Etão a unica diferença seria que eu iria ter que anota as minhas classe manualmente, e o problema das classe esta informando que não existe classe de persistencia ?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

13/10/2014

Querendo ou não a anotação é manual, ou você faz direto na classe ou você faz através do XML, não entendi bem sua questão.
GOSTEI 0
John Lima

John Lima

13/10/2014

sempre que crio uma classe e anoto ela como uma tabela e uma entidade o netbeans adicionar ela no xml. e quando eu faço a anotação e não possuo uma unidade de persistência o netbeans me informa que eu preciso criar uma
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

13/10/2014

sempre que crio uma classe e anoto ela como uma tabela e uma entidade o netbeans adicionar ela no xml. e quando eu faço a anotação e não possuo uma unidade de persistência o netbeans me informa que eu preciso criar uma


Tenta adicionar a seguinte propriedade:

properties.put("hibernate.archive.autodetection", "class,hbm");
GOSTEI 0
John Lima

John Lima

13/10/2014

mesmo assim esta pedindo para eu addcionar a classe
GOSTEI 0
POSTAR