Uma dúvida, estou fazendo um projeto de estudos, e estou na dúvida…
Vocês usam/recomendam, para um campo que só poderá ter dois valores (Sim/Não), usar boolean ou String de um caracter ?
O app é basicamente um CRUD, usando hibernate.
Como o atributo só pode ter dois valores possívels, use boolean.
[]´s
Carlos_ds_jar
davidbuzatto:
Como o atributo só pode ter dois valores possívels, use boolean.
[]´s
Com certeza boolean, quando você indica para o banco que vai usar boolean vc preprara ele pra receber apenas 2 tipos de valores diferentes, já um caracter pode receber um pouco mais, pense nisso…
E
entanglement
Em bancos de dados, às vezes há um tipo de dados especial só para booleanos.
Se esse tipo não existir, veja qual é a tradução que seu dialeto do Hibernate faz - por exemplo, o Hibernate poderia usar uma coluna CHAR(1) com o valor “Y” ou “N”, ou um SMALLINT com o valor “1” ou “0”.
Veja a documentação do dialeto do Hibernate para o seu banco.
Uma forma simples de determinar isso é fazer com que o Hibernate crie uma tabela para você, e ver qual o mapeamento que ele fez.
douglasrauber
entanglement:
Em bancos de dados, às vezes há um tipo de dados especial só para booleanos.
Se esse tipo não existir, veja qual é a tradução que seu dialeto do Hibernate faz - por exemplo, o Hibernate poderia usar uma coluna CHAR(1) com o valor “Y” ou “N”, ou um SMALLINT com o valor “1” ou “0”.
Veja a documentação do dialeto do Hibernate para o seu banco.
Uma forma simples de determinar isso é fazer com que o Hibernate crie uma tabela para você, e ver qual o mapeamento que ele fez.
Justamente por essas diferenças nos bancos que surgiu a dúvida…
Eu fiz um usando Mysql, por exemplo, e o campo criado foi do tipo BIT(1).
Vlw
Douglas
ctosin
Outra coisa que você deve considerar é se no futuro esses dois valores não podem virar 3 ou mais… Dependendo do caso eu criaria um enum ou usuaria o tipo char mesmo, o que já prepararia a aplicação para manutenções futuras. O boolean é melhor usar quando você tem realmente um conceito de verdadeiro e falso.