JPA...duvida como passar conexão para JASPER

Olá,

vi o exemplo abaixo de como rodar um arquivo .jasper e vi que tem que passar conexão do banco

e estou usando JPA (EntityManager)

Queria saber como faço pra passar conexão e executar o japer via web ???

se alguém puder me ajudar

abs

public class RelatorioBibliotecaPessoal { 
iexão com o banco de dados, redo o objeto Connection */ 
/* Realza contornanprivate static Connection getConnection( ) throws 
ClassNotFoundException, SQLException 
{ 
String driver = "org.firebirdsql.jdbc.FBDriver"; 
String url = "jdbc:firebirdsql:localhost/3050:c://db//Acervo.FDB"; 
String user = "sysdba"; 
String password = "masterkey"; 
Class.forName(driver); 
Connection con = DriverManager.getConnection( url, user, password ); 
return con; 
} 
/* Gera Relatorio e visualiza-o */ 
public void geraRelatorio( ) throws JRException, Exception 
{ 
Connection con = getConnection( ); 
Statement stm = con.createStatement( ); 
String query = "select * from Livro"; 
ResultSet rs = stm.executeQuery( query ); 
/* implementação da interface JRDataSource para DataSource ResultSet */ 
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs ); 
/* HashMap de parametros utilizados no relatório. Sempre instanciados */ 
Map parameters = new HashMap(); 
// parameters.put("COLUNA", valor); 
/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */ 
JasperFillManager.fillReportToFile( "BibliotecaPessoal.jasper", parameters, jrRS ); 
/* Exporta para o formato PDF */ 
JasperExportManager.exportReportToPdfFile( "BibliotecaPessoal.jrprint" ); 
/* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem 
a necessidade do .jrprint */ 
// JasperRunManager.runReportToPdfFile("BibliotecaPessoal.jasper", parameters, jrRS); 
/* Visualiza o relatório em formato PDF */ 
JasperViewer.viewReport( "BibliotecaPessoal.pdf", false ); 
} 
public static void main(String[] args) throws JRException, Exception 
{ 
new RelatorioBibliotecaPessoal().geraRelatorio(); 
} 
} 
Basicamente, a classe anterior 

Alias… eu queria saber como faço isso com o Hibernate sem usar o método connection da session que esta depreciado.

Você pode obter a conexão através do conteiner web, devidamente mapeado, conforme os passos abaixo:

Acrescente no arquivo web.xml o seguinte trecho (lembre-se de definir o Datasource no container-web/application conforme a especificação do servidor):

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">
...
    <resource-ref>
        <description>DataSource</description>
        <res-ref-name>postgreDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
...
</web-app>[/code]

No método a ser utilizado:

[code]Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("postgreDS");
return ds.getConnection();

ou se quiser utilizar annotations:

[code]private @Resource DataSource fonteDados;

public metodo() {

Connection conexao = fonteDados.getConnection();

}
[/code]

Espero que a solução te ajude.

Bom trabalho,

OBRIGADO… mas aaplicação está usando JPA utilizando uma classe onde tem metodos estatico
pegando EntityManagerfactory e EntityManager…utilizando LOCAL

teria algum exemplo para essa situação …

abs

Também uso isso em uma aplicação desktop… mas também na web.

Não tem nenhum modo que sirva pros dois?