Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/09/2015, 13:55
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Comunicación con la base de datos ¿Siempre usar objetos?

Desconozco como es en java, seguramente debe requerir escribir mucho código para cualquier cosa, como siempre.

Pero en .Net, en general se recomienda Entity Framework, que te resuelve no solo el problema de no tener que escribir el SQL manualmente (a menos que quieras hacerlo para cosas específicas o cuestiones de rendimiento en algunos casos), si no que también te mapea automáticamente todos los datos de la base a las entidades del modelo para que no tengas que hacerlo vos mismo.

Con respecto a tu pregunta (1): en C# usando proyecciones se puede lograr traer solamente los campos que se deseen de una tabla, si es que no se quieren todos.

Código C#:
Ver original
  1. var empleados = db.Empleados.Select(x => new { x.Id, x.Nombre, x.Apellido }).ToList();

usando esa instrucción, EF genera el SELECT Empleados.Id, Empleados.Nombre, Empleados.Apellido en lugar de SELECT *.

Tu pregunta (2): En general se recomienda que el modelo tenga lo que se llaman "navigation properties" que son propiedades que relacionan las entidades:

Código C#:
Ver original
  1. public class Estado { .... }
  2.  
  3. public class Empresa
  4. {
  5.      public Estado Estado { get; set; }
  6.      
  7.      //.....
  8. }

eso hace que EF mapee automaticamente las foreign keys y te permita usar la funcionalidad de Include para definir qué entidades querés traer:

Código C#:
Ver original
  1. var empresas = db.Empresas.Include(x => x.Estado).ToList();

Eso te genera el SQL con un join, y te trae las empresas, cada una con su respectivo estado asociado, presente en la propiedad Estado.

Tu pregunta (3): En general se recomienda trabajar con datos fuertemente tipados, es decir, que necesitás una clase, aunque también podés usar un tipo anónimo como te mostré arriba.

Todo esto que te mencioné aplica a .Net, por supuesto. En java desconozco como sea, pero viendo lo limitado que es el lenguaje java yo diría que seguramente requiere el triple de código hacer lo mismo.