Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/02/2017, 19:44
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 4 meses
Puntos: 52
Respuesta: Alguna API de Hibernate para hacer queries en java que no me haga querer s

Cita:
Iniciado por abrahamhs Ver Mensaje
En hibernate existen tres formas de ejecutar una consulta
O sea que no hay ninguna API moderna que no necesite escribir strings como si estuvieramos en 1995? Ni siquiera con java 8?

Realmente patético.

Cita:
Iniciado por abrahamhs Ver Mensaje
Este es un ejemplo en java

Código Java:
Ver original
  1. Query query=session.createSQLQuery("SELECT IdCiclo,nombreCiclo,Horas FROM CicloFormativo");
  2. List<Object[]> listDatos=query.list();
  3. for (Object[] datos : listDatos) {
  4.     System.out.println(datos[0]+ "-" +datos[1]+ " "+datos[2]+" Horas");
  5. }
Un ejemplo bastante malo. Yo estoy buscando objetos FUERTEMENTE TIPADOS, no esa cosa de Object[], donde tengo que castear de manera insegura. Para qué usas un lenguaje supuestamente estático si tus objetos son todos Object? para eso usa javascript.


Cita:
Iniciado por abrahamhs Ver Mensaje
Si existe una herramienta en eclipse para validar tus HQL
Lo voy a probar, pero ojeando la documentación no veo en ningun lado que esto se integre en el proceso de compilacion, sino que es una herramienta externa. Con lo cual no cubre la necesidad que yo planteo, que es atajar los errores en tiempo de compilacion

Cita:
Iniciado por abrahamhs Ver Mensaje
Se ve que eres fanboy de C#
Yo no soy fan de nada maestro. C# es objetivamente superior a java como lenguaje en todos los aspectos. Te preguntaste por qué lo unico que hizo java en los ultimos 10 años a nivel de diseño de lenguaje (y lo que piensa seguir haciendo por lo menos hasta 2020) es imitar a C#?

Tuve que agarrar este proyecto a la fuerza porque es un sistema contra el que tengo que integrar un sistema mio (hecho con tecnologia moderna, por supuesto, y no basura arcaica de java), y el cliente no tiene a nadie para hacer las modificaciones que se necesitan para poder integrarlo. Estoy rogando que encuentren un pobre diablo que tenga ganas de lidiar con esto.


Cita:
Iniciado por abrahamhs Ver Mensaje
escogieron NHibernate
Nadie escogió NHibernate, porque es un proyecto hecho en java y NHibernate es .NET. No. sé de que estas hablando. Yo no hice ningun comentario con respecto a NHibernate, que es un producto buenísimo y muy cómodo de usar, sino de la versión de java, es decir Hibernate, que claramente me estoy dando cuenta que está atascado en 1999 igual que el resto del ecosistema de java.

Cita:
Iniciado por abrahamhs Ver Mensaje
en vez de Linq u o framework c#?
LINQ es una característica del lenguaje C#, y se puede usar perfectamente con NHibernate o de hecho con cualquier backing store, ya que LINQ es agnóstico del origen de los datos.
A diferencia de java, C# es un lenguaje moderno y no te obliga a meter tu código como strings como si fuera 1995.

"framework C#" no tengo ni la menor idea de lo que es. No existe tal cosa. C# es un lenguaje no un framework.

Cita:
Iniciado por abrahamhs Ver Mensaje
La razón es que la mayoria de ORMs C# estan demasiado integrados hacia SQL Server y cuesta trabajo migrar otras bases, cosa que no ocurre con NHibernate.
1 - Esta frase es totalmente contradictoria. NHibernate es un ORM de .NET. Supongo que te referis a Hibernate de java.
2 - Y no, no es verdad que NHibernate no soporte bien otras bases de datos que no sean SQL Server: http://stackoverflow.com/a/7247289/643085

Cita:
Iniciado por abrahamhs Ver Mensaje
Otra cosa también que pasa con C# es que te facilita tanto las cosas que despues no tienes idea de que esta pasando por atras.
Esto es totalmente falso y hasta ridículo. El hecho de que vos no conozcas un lenguaje no quiere decir que yo no lo conozca, y no sepa perfectamente lo que hace, tanto el lenguaje como las APIs del .NET Framework que uso.

Cita:
Iniciado por abrahamhs Ver Mensaje
Por ejemplo, en este codigo:
Código Java:
Ver original
  1. var mayoresDeEdad =
  2.     session.Query<Persona>()
  3.            .Where(x => x.Edad > 30)
  4.            .ToList();
¿Sabes cual es el tipo real de mayoresDeEdad?
Claro que lo sé. Es un List<Persona>, y no porque adivine, sino que estoy usando un lenguaje moderno que no me obliga a duplicar informacion. El compilador de java, en cambio, parece un nene retrasado, tenés que repetirle las cosas 10 veces para que las entienda.

Cita:
Iniciado por abrahamhs Ver Mensaje
Y la respuesta es que no lo sabes porque usar var, es como usar el variant de visual basic
Esto es totalmente falso y demuestra tu falta total de conocimiento del lenguaje C#, y de hecho de cualquier lenguaje moderno. Kotlin, Swift, F#, Scala y cualquier lenguaje moderno tienen esta característica. No todos vivimos en 1995.

Cita:
Iniciado por abrahamhs Ver Mensaje
que toma el tipo de dato que mejor le acomoda segun el caso. Es decir estas usando C# al estilo visual basic y no al estilo C#.
Incorrecto. var es inferencia de tipos, y no duck typing. Aprendé la diferencia entre esas 2 cosas:
- var es estáticamente tipado y toma el tipo que resulta de la asignacion. El compilador no necesita que yo le diga que ese objeto es un List<Person> porque es lo suficientemente inteligente para darse cuenta solito (a diferencia del compilador de java, que parece un nene retrasado). Esto no quiere decir que el objeto pueda pasar de ese tipo a un tipo diferente, en ningun caso.
- Duck Typing es cuando un objeto no tiene una forma estricta y se puede adaptar a cualquier caso segun se necesite. Por supuesto este NO es el caso de usar var en C#, sino lo que hacen lenguajes dinamicos como Ruby o Javascript.

Cita:
Iniciado por abrahamhs Ver Mensaje
Mucha gente se queja de java de que es muy verboso
Yo me quejo de java porque es un lenguaje incapaz de expresar las ideas de una forma clara, concisa y sin ruido idiota en el medio. Mi ejemplo de LINQ demuestra lo que es un lenguaje que no tiene ruido, mientras que los ejemplos que me han presentado en java, tanto de Criteria como usar un string para el SQL (o como se llame) tienen enormes desventajas.

Cita:
Iniciado por abrahamhs Ver Mensaje
yo lo veo como algo bueno, porque eso obliga a los programadores novatos a hacer bien las cosas.
No, la verdad que no. Un lenguaje inexpresivo e incapaz no te "obliga a hacer bien" nada, sino que te obliga a introducir ruido inútil en lugar de código que realmente tenga algún valor.

Por otro lado, es bastante discutible la filosofía de que un lenguaje de programación se tiene que adaptar a las necesidades de los "novatos", yendo en contra de la expresividad y productividad que necesitan los programadores experimentados.

Cita:
Iniciado por abrahamhs Ver Mensaje
Y si no me crees pregunta a los que programan PHP
Irrelevante. PHP es un lenguaje dinámico y los lenguajes dinámicos tienen otra filosofía de diseño diferente. No me interesa lo que haga o deje de hacer PHP, con el que gracias a Dios ya no tengo que lidiar. Me interesa poder hacer los arreglos que tengo que hacer en este proyecto usando algo que medianamente se parezca a lo que se usa hoy, en 2017, y no tener que usar algo que parece sacado de una pelicula de la edad media.