Boa Noite Galera!!!
Seguinte, gostaria de saber se é possível criar uma aplicação Flex 4 que acesse determinado Banco de Dados de acordo com o usuário logado…
Isso é possível???
Desde já muito obrigado.
Boa Noite Galera!!!
Seguinte, gostaria de saber se é possível criar uma aplicação Flex 4 que acesse determinado Banco de Dados de acordo com o usuário logado…
Isso é possível???
Desde já muito obrigado.
Depende, caso voce crie uma tabela de usuarios unificada para todos os bancos e no backend julgar qual tabela determinado usuario deve acessar é possível sim. Lembrando que o flex não acessa banco de dados, voce teria que usar um backend em java ou em php por exemplo.
Fabricio,
Eu já até tenho a aplicação funcionado com dois bancos, porém ainda não critico os clientes, estou usando o Flex 4 com back-end Java + Hibernate e Banco de Dados Firebird.
O que estou precisando é que na tela principal, terá um combo para Cliente e um combo para Anos, após a seleção (Exemplo: Cliente 01 - Ano: 2009) farei uma validação de Nome e Usuário já no Banco deste Cliente.
A regra de negócio não é minha, foi me solicitado isso, o cliente vai ter um Banco de Dados por ano.
Resumindo: Como faço para setar o Banco de Dados a partir da seleção do Cliente e do Ano na tela principal???
Fabricio,Eu já até tenho a aplicação funcionado com dois bancos, porém ainda não critico os clientes, estou usando o Flex 4 com back-end Java + Hibernate e Banco de Dados Firebird.
O que estou precisando é que na tela principal, terá um combo para Cliente e um combo para Anos, após a seleção (Exemplo: Cliente 01 - Ano: 2009) farei uma validação de Nome e Usuário já no Banco deste Cliente.
A regra de negócio não é minha, foi me solicitado isso, o cliente vai ter um Banco de Dados por ano.
Resumindo: Como faço para setar o Banco de Dados a partir da seleção do Cliente e do Ano na tela principal???
Se eu entendi direito e algo tipo:
Combo nome, o usuario escolhe o nome, depois de escolher o nome a combo ano é preenchida com os anos referentes ao usuario ?!
Se for isso a logica é facil!
Não lembro bem dos comandos em flex/AS pois sou iniciante, mas acho que da para fazer assim:
Eu ja fiz esse tipo de coisa no php usando JavaScript e Ajax e creio que fazer isso no Flex seja ainda mais facil!
Espero ter ajudado!
Quando voce criar o client flex passe como parametro para o java e para o hibernate o bd que voce vai usar e crie a conexao baseado nesse parametro. Dai voce pode validar oque quiser.
Espero ter ajudado. Lembrando que a conexão com o banco pode ser instanciada manualmente no hibernate, não só pelo hibernate.cfg.xml.
Outra coisa, a regra de negócio é do cliente mas a arquitetura da aplicação é responsabilidade do desenvolvedor. Então, contanto que sirva as necessidades do cliente a arquitetura pode ser feita de mil maneiras diferentes.
Fabrício, entendi… O que acontece é que estou apanhando para montar a estrutura dessa regra.
Seguinte, acredito não ser problema criar a tela inicial onde terá os combos com os Nomes e Anos (Ano de acordo com o cliente).
Meu problema é para setar o Banco de acordo com estas informações entende.
Tipo, eu criei uma Classe HibernateUtil
package hibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtilAnual {
private static SessionFactory sessionFactoryAnual;
private static Session sessionAnual;
// private static Logger logger = Logger.getLogger(hibernateUtil.class);
static {
try
{
sessionFactoryAnual = new Configuration().configure("hibernateAnual.cfg.xml").buildSessionFactory();
}
catch(Exception erro)
{
sessionFactoryAnual = null;
}
}
public static Session getCurrentSession() {
if (sessionAnual == null || !sessionAnual.isOpen() || !sessionAnual.isConnected()) {
sessionAnual = ((SessionFactory) sessionFactoryAnual).openSession();
}
return sessionAnual;
}
public static void closeSession() {
sessionAnual.close();
}
}
Sei que para cada Banco é só criar um “.cfg.xml”, só que não sei como fazer para passar um parâmetro para esta classe, tipo passar a descrição do “.cfg.xml” a se conectar.
Estou apanhando nesta parte, eu já programo, mais estou iniciando tanto em Java quanto Flex.
Uma sugestão, crie uma tabela mestre para armazenar quais os clientes e os bancos cadastrados para poder retornar no cliente flex, ja que senao a cada criacao de um banco de dados novo voce tera que recompilar o programa e ao invés de utilizar o xml para configurar o hibernate faça com código a conexao, os mapeamentos pode deixar no xml mesmo. Qualquer coisa meu skype é fa.batista. Se quiser tirar alguma duvida é só me adicionar e chamar por la.
private static SessionFactory sessionFactoryAnual;
private static Session sessionAnual;
sessionAnual=sesessionFactoryAnual.open(Connection c,Interceptor i)
Entao na connection c voce pode por os parametros de conexao com determinado banco de dadosprivate static SessionFactory sessionFactoryAnual; private static Session sessionAnual; sessionAnual=sesessionFactoryAnual.open(Connection c,Interceptor i)
Fabrício, Boa Tarde!!!
Andei fuçando aqui e consegui fazer a conexão via código:package hibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactoryGeral;
private static Session sessionAnual;
private static String caminhoBanco = "bancos/GERAL.FDB";
static {
try
{
Configuration configuration = new Configuration()
.addResource("br/com/ehweb/business/repositorys/maps/geral/Ano.hbm.xml")
.addResource("br/com/ehweb/business/repositorys/maps/geral/Estabelecimento.hbm.xml")
.setProperty("hibernate.dialect", "org.hibernate.dialect.FirebirdDialect")
.setProperty("hibernate.connection.driver_class", "org.firebirdsql.jdbc.FBDriver")
.setProperty("hibernate.connection.url", "jdbc:firebirdsql:localhost/3050:.../"+caminhoBanco)
.setProperty("hibernate.connection.username", "SYSDBA")
.setProperty("hibernate.connection.password", "masterkey");
sessionFactoryGeral = configuration.buildSessionFactory();
}
catch(Exception erro)
{
sessionFactoryGeral = null;
}
}
public static Session getCurrentSession() {
if (sessionAnual == null || !sessionAnual.isOpen() || !sessionAnual.isConnected()) {
sessionAnual = ((SessionFactory) sessionFactoryGeral).openSession();
}
return sessionAnual;
}
public static void closeSession() {
sessionAnual.close();
}
}
Consegui também montar os combos para retornar os Anos de acordo com Instituição selecionada, com isso consigo montar uma String com o caminho para o Banco que deverá se conectar.
Meu problema agora é passar essa String para o HibernateUtil que criei, onde a Variável caminhoBanco representa o caminho do Banco a ser conectado.
Desculpe galera, tentei de várias formas e não consegui, o problema não é passar o parâmentro para o Java, mais sim como montar o HibernateUtil de forma que receba este parâmetro, alimente a Variável caminhoBanco.
Desde já muito obrigado pela atenção
Crie um metodo em java de forma que ele seja chamado no flex e a partir dos dados do combobox. Ao invés de utilizar um construtor quebre o hibernate utils em metodos.
Cara, Juro que tentei fazer isso… Tentei passar os dados para um construtor do HibernateUtil, porém apresenta alguns problemas, mais com certeza é na linguagem, ou seja, eu não consegui.
As variáveis tem de ser static? Se eu mudo a linguagem exige automaticamente.
Eu estou fazendo exatamente dessa forma, a partir de DAO eu chamo o HibernateUtil, queria passar para o Construtor o parametro para alimentar justamente a variavel caminhoBanco.
No construtor não, teria que ser em um metodo remoto. um metodo simples.
Ok, vou tentar modificar aki…
Desde já valeu d+.
Ok, vou tentar modificar aki…Desde já valeu d+.
Cara, o meu problema é na hora de passar o paramento para o HibernateUtil.
Veja só o que eu fiz no HibernateUtil:
private static SessionFactory sessionFactory;
private static Session session;
private static void buildSessionFactory(String caminhoBanco) throws Exception {
if (sessionFactory == null) {
try {
Configuration cfg = new Configuration()
.addResource(
"br/com/ehweb/business/repositorys/maps/anual/Teste.hbm.xml")
.setProperty("hibernate.dialect",
"org.hibernate.dialect.FirebirdDialect")
.setProperty("hibernate.connection.driver_class",
"org.firebirdsql.jdbc.FBDriver")
.setProperty(
"hibernate.connection.url",
"jdbc:firebirdsql:localhost/3050:"+caminhoBanco)
.setProperty("hibernate.connection.username", "SYSDBA")
.setProperty("hibernate.connection.password",
"masterkey");
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
sessionFactory = null;
throw e;
}
}
}
public static Session getCurrentSession(String caminhoBanco) {
try {
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
buildSessionFactory(caminhoBanco);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return session;
}
Agora no DAO, veja só:
public class TesteDAO implements ITeste {
private Session sessaoAnual = HibernateUtilAnual.getCurrentSession("Bd03/TESTE.FDB");
@SuppressWarnings("unchecked")
@Override
public List<Teste> getList() throws Exception {
List<Teste> list = sessaoAnual.createQuery(
"FROM Teste").list();
HibernateUtilAnual.closeSession();
return list;
}
}
Como vou fazer para enviar os dados do Flex para o DAO e pegar este valor e passar para getCurrentSession…
Você não teria um exemplo de como eu poderia fazer isso???
Ficarei eternamente grato.
É só chamar o RemoteObject pelo flex passando o parametro desejado, não entendi sua duvida.