Jump to content
laudirbispo

Como implementar classe DAO que possui relações entre tabelas?

Recommended Posts

Cheguei em um ponto da minha aplicação em que preciso relacionar tabelas em uma única consulta.

 

Até o momento, uso uma classe DAO para cada tabela no banco de dados, com funções CRUD básicas.

Mas agora surgiu a necessidade de relacionar essas tabelas, qual é a camada que faz isso e como ela funciona? Procurei na net, há várias explicações, (e a busca aqui do Fórum está desagradável)

mas cada um diz uma coisa. Fiquei mais confuso ainda!

Estou tentando implementar o padrão MVC.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Claudinei Teodoro
      Sou super novato estou começando a entender programação agora e estou com dificuldade em implementar o método UPDATE no meu DAO Generico.
      Os métodos INSERT, SELECT, DELETE já esta funcionando preciso somente de uma ajuda para o método UPDATE.

      Segue abaixo método INSERT que estou utilizando, alguém pode me ajudar com o método UPDATA utilizando como base este método INSERT.


      public void salvar(T objeto) throws SQLException, IllegalArgumentException, IllegalAccessException, ClassNotFoundException {


      Class classe = objeto.getClass();

      String parteInicialSQL = "INSERT INTO " + classe.getSimpleName().toLowerCase() + "(";

      Field[] atributos = classe.getDeclaredFields();
      String parteFinalSQL = ") VALUES(";

      for (Field atributo : atributos) {
      if (!"id".equals(atributo.getName())) {
      parteInicialSQL += atributo.getName().toLowerCase() + ",";
      parteFinalSQL += "?,";
      }
      }

      parteInicialSQL = parteInicialSQL.substring(0, parteInicialSQL.length() - 1);
      parteFinalSQL = parteFinalSQL.substring(0, parteFinalSQL.length() - 1) + ")";

      Class.forName("org.postgresql.Driver");
      Connection conexao = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/postgres", "postgres", "123456");
      PreparedStatement sql = conexao.prepareStatement(parteInicialSQL + parteFinalSQL);

      int numeroInterrogacao = 1;
      for (Field atributo : atributos) {
      if (!"id".equals(atributo.getName())) {
      atributo.setAccessible(true);
      sql.setObject(numeroInterrogacao++, atributo.get(objeto));
      }
      }

      System.out.println(parteInicialSQL + parteFinalSQL);

      sql.execute();
      conexao.close();

      }
    • By aldoneto.89
      tenhos as 3 seguintes classes:
       
      <?php class Sql extends PDO{ private $conn; //conexão com o banco public function __constuct(){ $this->conn = new PDO("mysql:host=localhost;dbname=php7","root","root"); } private function setParams($statment, $parameters = array()){ foreach(parameters as $key => $value) { //associar os parametros ao comando.//chave e o valor $this->bindParam($key, $value); } } private function setParam($statment, $key, $value){ $statment->bindParam($key, $value); } public function query($rawQuery,$params = array()){ //1-parametro a ser tratato e 2 os dados $stmt = $this->$conn->prepare($rawQuery); // $this->setParams($stmt, $params); $stmt->execute(); return $stmt; } public function select ($rawQuery, $params = array()):array { $stmt = $this->query($rawQuery, $params); $stmt->fetchAll(PDO::FETCH_ASSOC); } } <?php spl_autoload_register(function($class_name){ $filename = $class_name.".php"; if(file_exists(($filename))){ require_once($filename); } }); ?> <?php require_once("config.php"); $sql = new Sql(); $usuarios = $sql->select("SELECT * FROM tb_usuarios"); echo json_encode($usuarios); ?> e esta dando o erro :
       
      Fatal error: Uncaught TypeError: PDO::__construct() expects at least 1 parameter, 0 given in C:\xampp\htdocs\DAO\index.php:5 Stack trace: #0 C:\xampp\htdocs\DAO\index.php(5): PDO->__construct() #1 {main} thrown in C:\xampp\htdocs\DAO\index.php on line 5
       
      o engrçado é que peguei em uma videoaula e esta igual ao do professor
       
      diz que tem q passar um parametro, mas no dele não tem parametro
    • By laudirbispo
      Cheguei em um ponto da minha aplicação em que preciso relacionar tabelas em uma única consulta.
       
      Até o momento, uso uma classe DAO para cada tabela no banco de dados, com funções CRUD básicas.Mas agora surgiu a necessidade de relacionar essas tabelas, qual é a camada que faz isso e como ela funciona?
      Por exemplo: A Classe PermissionsDAO faz insert, update, delete, select na tabela permissions, mas essa classe agora precisa acessar as tabelas privileges, groups, user_groups, etc.
      Procurei na net, há várias explicações, (e a busca aqui do Fórum está desagradável)
      mas cada um diz uma coisa. Fiquei mais confuso ainda!
       
      Estou tentando implementar o padrão MVC.
    • By laudirbispo
      Estou começando e tenho algumas dúvidas, sobre como implementar isso.
      Dúvida sobre a classe DAO, é melhor passar o objeto de conexão com injeção de dependência ou instância-lo no construtor?
       
      Qual seria a melhor abordagem?
    • By claudiojuniorfabiao
      Fala, galera!
       
      Indo direto ao ponto, qual a diferença entre o padrão de software DAO e um ORM?
       
      Em minha ignorância, me parecem conceitos semelhantes, sendo o DAO simplesmente algo mais abstrato, então, de certa forma, me parece que todo ORM está implementando um DAO de qualquer maneira, uma vez que (sendo um DataMapper), separa a lógica de domínio, da lógica de acesso aos dados.
       
      Agradeço desde já a contribuição com os meus estudos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.