Hola, muy buenas.
Llevo trabajando con NHibernate algún tiempo y recientemente me ha
surgido una duda...
Tengo que encriptar el contenido completo de una base de datos oracle,
y por supuesto, es deseable la posibilidad de hacer likes en las
cadenas de texto aunque estén encriptadas.
Muy a mi pesar las encriptaciones transparentes no permiten ese like,
ya que se realizan después de la consulta, eso si, son muy cómodas al
definir un usertype de encriptación, es "automático". No obstante, no
suple mis necesidades actuales. Por tanto habría que hacerlo desde la
base de datos, despues de hacer unas pruebas y demás, cree unos
triggers en la base de datos para el insert y update con lo que cuando
recibe un insert, introduzco los datos directamente encriptados, ahora
bien, soy incapaz de crear un trigger para el select, al parecer no se
puede. Con lo que tendría que utilizar sentencias "personalizadas".
Ahora bien, es un proyecto de grandes dimensiones, donde todas las
consultas se realizan con criteria, ninguna con HQL ni SQL, por lo que
no tengo una cadena a la que "meterle mano". Habría algún modo de
decirle a NHibernate que me utilice una función en el campo a la hora
de hacer un select?
Por ejemplo, si yo hago un Get(Dictionary condiciones) donde
condiciones sea {"Nombre","Pepe"}, la SQL que me crearía nhibernate
(no exactamente, pero se entiende igual) sería:
Select Nombre FROM tabla WHERE Nombre='Pepe';
Para poder realizar likes y desencriptar los datos para hacer las
select desde la base de datos, mis consultas deben llevar el siguiente
formato:
Select toolkit.decrypt(Nombre) FROM tabla WHERE
tollkit.decrypt(Nombre) = 'Pepe';
Por lo que me pregunto si hay algún modo con NHibernate (que no Fluent
NHibernate) de indicarle mediante criteria que el nombre de la columna
debe de llevar el llamamiento a dicho procedimiento? Es decir, se
puede indicarle a NHIbernate que "ColumName" =
"toolkit.decrypt(ColumName)" para las select?
GRACIAS de antemano.
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano