Olá amigos, estou iniciando em java, e, todo mundo fala em bean, bean, bean!!!
Pelo o que eu entendi ( por osmose ) bean é um componente com set’s e get’s somente… ë isso mesmo, ou só falei besteira???
Abraços,
Tiago
Olá amigos, estou iniciando em java, e, todo mundo fala em bean, bean, bean!!!
Pelo o que eu entendi ( por osmose ) bean é um componente com set’s e get’s somente… ë isso mesmo, ou só falei besteira???
Abraços,
Tiago
vc está correto… uma bean é uma classe normal com várias
propriedades com os métodos get/set…
um exemplo de uso de uma bean é quando vc acessa o banco de dados e cria uma lista com várias beans…
digamos que vc possui uma tabela Pessoa, com os campos nome e fone…
aí na bean terá:
private String nome;
private String fone;
// gets e sets
depois que vc ler os registros da base vc pode criar uma lista de beans do tipo Pessoa entende ?
esta lista vc manda para uma página jsp por exemplo para mostrar os resultados da consulta…
é isso 
Mais duas coisas que tem que ter, pra ser considerado um bean:
E nao, beans nao necessariamente precisam ser meras “structs” do C embelezadas, eles podem ter métodos com inteligência, sim 
Valew pela resposta pessoal!
uma coisa que eu não saquei…
duas cosias na verdade…
Eu sei o que é Serialização, mas eu não entendi por que temos que implementar Serializable neles.
E por que do contrutor default?? Alguma conveção ou algo do tipo?
:arrow: Serializable:
Por que os beans podem ter que trafegar pela rede em um momento qualquer (um Servlet falando com EJB, por exemplo).
:arrow: Construtor Default:
E eles tem que implementar um construtor default para que um mero .newInstance() (da API de reflection) possa instanciá-los. Isso é essencial, por exemplo, nos JSPs, com a tag <jsp:useBean>.
Hummmmm entendi!!!
Muito obrigado pelas explicações
perguntinha boba
o que é uma classe Serializable??
pra que serve?
como isso funciona na pratica?
Pelo o que eu sei, os beans não precisam necessariamente implementar exatamente a interface java.io.Serializable. Precisam apenas ter algum mecanismo de serialização (atualmente a preferível é por XML).
Serializable é uma interface de marcação. Se a classe não implementá-la, os objetos não serão serializáveis. Serve só pra demonstrar que o programador realmente aceita as consequencias de uma serialização.
(Serialização é transformar o objeto que está na memória da JVM em algo que pode ser persistido em um arquivo, trafegado na rede, etc)
pela definição de JavaBean http://java.sun.com/products/javabeans/
um bean precisa ser serializavel (isto é, implementar java.io.Serializable)
pelo que diz em http://java.sun.com/products/javabeans/faq/faq.general.html#Q2
um JavaBean é um componente reutilizavel, e não somente uma classe com get e set para as propriedades,
a parte de Introspection do bean em uma ferramenta, precisa de um BeanInfo para funcionar corretamente, assim pode-se descrever as propriedades, metodos e eventos do Bean,
uma classe que apenas tem os metodos get e set para as propriedades, esta mais para um VO do que para um JavaBean,
um bom exemplo de JavaBean é o JButton, é serializavel, possui um BeanInfo para introspecção por ferramentas, encapsula alguma logica de ffuncionamento, …
dizer que um JavaBean é apenas uma classe com get e set é no minimo menospresar a API JavaBean, que contem varias ferramentas.
para simplificar bastante um JavaBean é um componente reutilizavel que pode ser plugado em ferramentas de construção (como netbeans ou JBuilder) serializavel (para esta ferramenta poder salvar seu estado e recuperar depois, que possui um contrutor default (por exigencia da especificação), e encapsula alguma logica de funcionamento (caso contrario não teria necessidade de criar este componente, ou de chama-lo de componente) e pode ter uma ou mais classes, o que é conhecido como o Bean é apenas a interface publica para este componente, onde estão disponiveis suas propriedades, metodos e eventos.
pela definição de JavaBean http://java.sun.com/products/javabeans/
um bean precisa ser serializavel (isto é, implementar java.io.Serializable)
Não necessariamente…
ops, foi mau, me passei nesta 
eu levei um tempo para entender oque é um Bean e como usar (o cv que diga né?! hehehehe)
mas assim… uma coisa que eu não tinha aprendido era que tinha que ter um construtor em branco… ele tem que ser necessariamente em branco?
por exemplo:
public class Pessoa implements Serializable{
private String nome;
private int idade;
public Pessoa(String nome, int idade){
this.nome = nome;
this.idade = idade;
}
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
public void setIdade(int idade){
this.idade = idade;
}
public int getIdade(){
return idade;
}
}
Isso é errado? Se for… eu poderia fazer um metodo setPessoa(String nome, int idade) com a mesma funcionalidade do construtor?
A príncípio não há problema em ter um construtor com todos os parâmetroas, mas seu bean deve obrigatoriamente também ter um construtor sem parâmetros entre outras coisas pelos motivos citados pelo cv:
Outro motivo é que, no caso de beans gráficos (como componentes Swing) em IDEs (como JBuilder, NetBeans, Eclipse, etc), também é necessário que estes beans tenham um construtor sem argumentos.
E também há os EJBs
Oi Bani, qual o mecanismo para serializar um bean para um xml? Tem que usar alguma api propria para o processamento de xml ou implementar/extender alguma classe? E por que a serializaçao para arquivos xml esta’ sendo mais usada? Por causa de Web Services?
valeuz…
Mal eu fugir do assunto do tópico, mas o que são/é “EJBs” ?
Obrigado,
Tiago
EJB - Enterprise Java Bean
A bem grosso modo são beans inteligentes. São desenvolvidos para serem componentes reutilizáveis e fazem parte da especificação J2EE. Assim como servlets e jsp que rodam dentro de um container (servlet container) precisam de um EJB container.
Para serializar um bean em XML você usa a classe XMLEncoder e para o processo inverso a XMLDecoder.
São bem simples de usar, e saiu um artigo a respeito na última JavaMagazine.
Deve ser porque XML está na moda mesmo, mas se você quiser mais detalhes pode ver a JSR-57