drsmachado 15 de dez. de 2011
Está utilizando algum framework ORM ou jdbc puro?
pauloglc 15 de dez. de 2011
estou utilizando puro… e gostaria que fosse assim pra pegar as manhas… hehe
drsmachado 15 de dez. de 2011
Se fosse com framework seria bem simples.
Com jdbc puro, sugiro criar uma interface para cada DAO isolado. Afinal, o tipo de argumento de métodos como insert, delete e update seria mais específico, não te obrigando a fazer conversões ou utilizar reflection
evefuji 15 de dez. de 2011
drsmachado 15 de dez. de 2011
Se vai usar reflection, já pesquisa e usa hibernate então…
pauloglc 15 de dez. de 2011
hum, interessante esse reflection… vou tentar com ele e posto o resultado aqui…
esse não deu certo… eu ja tinha tentado…
outra coisa q tentei foi criar uma interface tb para as minhas classes…
class Pessoa implements IPersistable
class Produto implements IPersistable
e os meus DAOs ficariam
public IPersistable insert ( IPersistable objeto );
acho que a modelagem ficaria boa, digo sem gambiarras…
mas tb nao adiantou muito, pq d qq jeito tenho q dar cast pra todo lado…
agora me digam: esse reflection num é considerado gambiarra nao? hehe
valeu
drsmachado 15 de dez. de 2011
Reflection não é gambiarra, é uma solução de alto nível. Agora, seria o mesmo que caçar coelho com rifle para elefante…
lsjunior 15 de dez. de 2011
pmlm:
public <T> T insert(T object)
Vc deve ter feito algo errado, pois dessa forma deveria funcionar. De uma olhada nesse código.
public class GUJ1 {
public static class Test {
public < T > T insert ( T t ) {
System . out . println ( "Inserting: " + t );
return t ;
}
}
public static void main ( String [] args ) {
Test t = new Test ();
Integer i = t . insert ( Integer . valueOf ( 1 ));
String s = t . insert ( "Test" );
Object o = t . insert ( null );
List < Map < String , String >> list = t . insert ( new ArrayList < Map < String , String >> ());
System . out . println ( "... " + i );
System . out . println ( "... " + s );
System . out . println ( "... " + o );
System . out . println ( "... " + list );
}
}
pauloglc 15 de dez. de 2011
lsjunior:
pmlm:
public <T> T insert(T object)
Vc deve ter feito algo errado, pois dessa forma deveria funcionar. De uma olhada nesse código.
public class GUJ1 {
public static class Test {
public < T > T insert ( T t ) {
System . out . println ( "Inserting: " + t );
return t ;
}
}
public static void main ( String [] args ) {
Test t = new Test ();
Integer i = t . insert ( Integer . valueOf ( 1 ));
String s = t . insert ( "Test" );
Object o = t . insert ( null );
List < Map < String , String >> list = t . insert ( new ArrayList < Map < String , String >> ());
System . out . println ( "... " + i );
System . out . println ( "... " + s );
System . out . println ( "... " + o );
System . out . println ( "... " + list );
}
}
hum, talvez tenha feito errado mesmo... se funcionar assim vai ficar muito bom...
quando chegar em casa vou testar,
valeu pessoal
pauloglc 15 de dez. de 2011
Cara, o
funcionou 100%, ficou do jeitinho que eu queria, mas poderia me explicar oq é esse T? eu vi que posso substituir por qq coisa, mas oq ele representa?
obrigado…
o reflection eu nem cheguei a testar já que essa solução me atendeu bem
AbelBueno 15 de dez. de 2011
Esse recurso é chamado de Generics. Mais informações aqui
Você pode pensar no T como uma variável que contém um tipo.
Na hora de usar a função, você diz qual tipo exatamente usará.
Importante notar, que o T é só uma convenção, poderia usar outras letras.
No seu caso, seu método insert aceita qualquer tipo, mas ele sempre retornará uma variável do mesmo tipo passado como parâmetro.
pauloglc 16 de dez. de 2011
hum, massa…
valeu pessoal