¿Cuál es tu forma preferida de interactuar con bases de datos desde el lenguaje de programación?[cerrado]

StackOverflow https://stackoverflow.com/questions/8087

  •  08-06-2019
  •  | 
  •  

Pregunta

Hay numerosas maneras de conectarse e interactuar con la capa de base de datos.En Java, por ejemplo, los usos comunes son JDBC llamadas de raw SQL relacional de objetos mapeados, JDBCTemplate (La primavera), procedimientos almacenados, etc.

En su idioma, que es la opción de su preferencia y por qué?Cuando se tomaría en cuenta a los demás?

¿Fue útil?

Solución

ORM cada vez, al menos tengo que pensar acerca de las bases de datos de la mejor.

Otros consejos

Me gusta mucho la 3 + 1 nivel de forma de hacer las cosas.Una capa de interfaz de usuario, uno para la lógica de negocio, y para la persistencia de datos.La última que decir?Dominio de objetos e interfaces.Esto hace que sea posible la carga de uno o dos de los principales niveles más el dominio de "nivel", y el código debería funcionar.

Se basa en gran medida en la inyección de dependencia y La inversión de Control principios.Los datos/la persistencia de nivel hace sólo dos cosas.Se crea, lee, actualizaciones y eliminaciones de datos y mapas para el dominio de formato de objeto.

La interfaz de usuario de nivel hace exactamente lo contrario.Muestra y recibe datos en una forma que el usuario puede relacionar, y los mapas de salida/entrada a y desde el dominio de formato de objeto.

El nivel de lógica de negocio, necesitan saber una cosa.La lógica de negocio.No le importa acerca de dónde están los datos, y no se preocupa de donde el nivel de datos que está poniendo.Sabe que debe bandera de una cuenta que se acaba de sobregiro, cómo hacer físicamente que no es parte de su trabajo.

El dominio de los objetos en sí mismos no tienen ninguna lógica, que son sólo de contenedores para pasar datos entre los niveles.Esto significa que usted puede cargar los objetos de dominio y las interfaces sin tener que pensar en todo acerca de las dependencias.

Al final del día, yo siento que tengo bastante clara la base de código, con una clara separación de niveles.Y con algunos estricto de las interfaces y las buenas clases de base de la mayoría de la codificación es sólo decir el software qué hacer cuando X pasa.Sólo la forma en que se supone debe ser.

</rant>

Editar:Oh, sí.Esto es cierto tanto para el LINQ, Subsónico, y otros Orm.

Ruby on Rails ActiveRecord limpia el piso con todo lo demás que he visto hasta ahora. LINQ parece que podría ser mejor en algunos casos, pero ActiveRecord es tan flexible.

LINQ es el camino a seguir para mí de aquí en

Yo prefiero construir un negocio modelo de objetos de capa (objetos y collecitons de los objetos).

Voy a construir la capacidad de interactuar con la base de datos en cada uno de los objetos de colección (para SQL Server, yo uso Sistema.De datos.SqlClient).He utilizado este modelo para SQL Server, MySQL y Oracle.

Entonces me interactuar con los objetos de mi código de la aplicación.

Mediante la abstracción de mi base de datos en objetos, mi código de la aplicación es coherente, independientemente de la base de datos.

ORM es realmente fantástico.

Yo uso SQL Alquimia cuando se trabaja dentro de python - funciona con casi todos los DBMS que he conocido.

Para el peso ligero de datos de las aplicaciones basadas en MacOS X, puedo usar los Datos de los núcleos, que tiene una gran herramienta de modelado de datos accesible a través de Xcode.

Ambos de estos muestran que el ORM bien hecha es excelente.He tenido menos éxito y el disfrute con EJB.

No he metido en el LINQ mundo, pero realmente he llegado a amar el DataTable/clases TableAdapter que Visual Studio ha hecho por medio de un conjunto de datos XSD.Por medio de un par de arrastra y hace clic en después de la creación de mi esquema de base de datos, ahora tengo un conjunto de datos/objeto DataTable que es inflexible y tengo el adaptador de métodos que están utilizando la parametrización de consultas a mi procedimientos almacenados para todos mis CRUD declaraciones.Incluso podrás crear una consulta de tabla de adaptadores para algunos de esos procedimientos que no estén directamente vinculados a una tabla.

Ah, y si todavía no ha creado los procedimientos almacenados, sin embargo, y sólo tiene las tablas, el asistente creará procedimientos o adhoc sentencias SQL para usted.

Este ha sido desde Visual Studio 2005 y ha reducido drásticamente hacia abajo en mi "estructura" con mi nueva web apps y me puede centrarse más en el negocio y la lógica de presentación.

Utilizamos un enfoque mixto, dependiendo de lo que se adapte a la situación particular dentro de la aplicación:

  • Cuando la lectura de una página que vale la pena de la información a mostrar y para un usuario que actualice podemos usar el modo de Hibernación
  • Cuando el procesamiento de un lote de actualizaciones o resumen de donde la mayoría de los datos ya están en la base de datos (ej.al final del día procesamiento) hacemos uso de PL/SQL (y tratar de pensar en sistemas)
  • Cuando un usuario realiza una búsqueda o se ejecuta un informe de resumen, podemos utilizar ibatis sqlmaps de acumular algo de SQL y traer de vuelta sólo los campos que nos interesan (no cada columna y, ciertamente, no es necesario niño filas, urggh)
  • Nada de lo que realmente tiene que correr rápido, vamos a utilizar cualquiera que sea el método que funciona mejor

Esto es con java/Oracle.

ActiveRecord, que es un patrón documentado (creo) en Fowler Los patrones de la Arquitectura Empresarial.Creo que es implementado en otros idiomas que el Rubí, aunque es bien conocido como una tecnología clave en los Rieles.Lo que sea, es una casa de abstracción de la base de datos, aunque tengo que confesar que me parece un poco torpe y en la find_by_sql área.Pero esto puede ser sólo de mí.

Pero (poniendo Viejo Gruñón hat ahora) todos los Orm en el mundo no son un sustituto de un buen conocimiento de SQL, sin que en realidad no me gusta para ver el acceso a un RDBMS ser permitido.

Utilizamos Delphi y Oracle Data Access Components (ODAC) ADO a través de Oracle.OleDBProvider.

Puede favorito es la utilización de Smalltalk con una piedra preciosa Repositorio de Objetos.Por qué?No ORM problema a tratar.Yo solo se consideraría algo más si se ve obligado o amenazado por mi empleador.

Mi método favorito es tener un objeto de la capa de abstracción.Idealmente, este es sólo el lugar que trabaja con SQL.Pero en la práctica, los objetos a veces se necesita hacer SQL-y las cosas, también.Pero nada fuera del objeto.

Hasta ahora, he escrito dichas capas de mí porque lo que estaba disponible era demasiado torpe, demasiado lento o demasiado grande.

Yo uso llanura JDBC porque estoy desarrollando una aplicación controlada por datos y mi modelo de base de datos es muy complejo.Todo lo que se describe en la base de datos, incluso la estructura de otras tablas.En adición a esto puedo usar procedimientos almacenados mucho.Por lo tanto ORM no es una opción para mí.

Me gusta Hibernate un montón :)

Sé que tiene una curva de aprendizaje, pero una vez que usted haya dominado esto, es muy bueno.

Huelga decir que yo no puedo esperar a tener en mis manos el nuevo Entity Framework en .NET 3.5 SP1 (sé que ya está disponible, pero soy un poco perezoso para escribir XML :) )

En C# me encanta LINQ to SQL para nada nuevo, pero me gusta mucho usar .netTiers + CodeSmith Generador para obtener una rápida y sucia capa de datos a la base de datos ocurriendo si estoy usando C# en .NET 2.0.

Actualmente estamos utilizando ODAC para hablar a la base de datos de Oracle y utilizar una gran cantidad de Paquetes de Oracle (PL/SQL).El nivel n del sistema se realiza a través de RemObjects lo que significa que nuestro cliente no tiene SQL en lo absoluto y sólo necesita la capacidad de enviar peticiones HTTP por lo que no la instalación de un techo.

Todo esto se hace con Borland Delphi y ha sido woking durante 2 años en un entorno de producción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top