Mensagens enviadas por: bcartaxo
Índice dos Fóruns » Perfil de bcartaxo » Mensagens enviadas por bcartaxo
Autor Mensagem
Recentemente vi um tópico perguntando quando usar protected. Gostaria de levantar uma discussão para quem quiser participar e dá sua opnião.

A própria classe, as classes filhas e as classes do mesmo pacote têm visibilidade dos membros protected. Essa é a especificação de Java.

Eu considero uma falha de Java tratar o protected dessa maneira, pq com isso vc pode quebrar o encapsulamento, e como ngm quer fazer isso acaba q membros protected são evitados e esse modificador muitas vezes perde seu sentido. Se ele se aplicasse apenas as proprias classes e classes filhas seria muito interessante.

Voltando a pergunta principal. Quando usar protected.

Costumo usar protected em membros (métodos ou atributos) que devem ser herdados, qd as classes filhas tem autoridade para saber da existência deles. O pessoal está muito bitolado a definir q variável de instancia eh private para se ter encaspulamento e esquecem o protected. Dai classes filhas q teriam total propriedade para conhecer determinados membros, perdem esse direito tendo q ter acesso via get e set.

Para exemplificar umj atributo nome da classe Pessoa, deveria ser protected, daí a classe Cliente q herda de Pessoa teria acesso direto. Afinal cliente TEM um nome! Deve haver henraça sim, caso seja private não haverá herança e o acesso terá q ser dado por get e set.

O pecado do protected de Java é aquele mesmo, daí algumas pessoas justificam com isso o eterno uso dos privates. Porém ainda há uma defesa =P Normalmente classes q ficam no mesmo pacote só quem tem acesso é vc ou alguem do seu grupo de desenvolvimento. Se vc destribui uma framework ou biblioteca ngm poderá botar classes nos seus pacotes e quebrar o encapsulamento pq vc usou protected. Bem... essa eh minha opinião. Quem tiver outras bota ai q a gente discute. Sempre quis saber opiniões dos demais sobre esse assunto.

[]´s
Sim... o Silveira tem razão, a visibilidade de menbros protected são para as proprias classes, classes filhas e classes do mesmo pacote. Isso é questão de certificação =P

Quanto a essa abordagem, bate com o Urubatan, eu considero uma falha de Java tratar o protected dessa maneira, pq com isso vc pode quebrar o encapsulamento, e como ngm quer fazer isso acaba q membros protected são evitados e esse modificador muitas vezes perde seu sentido. Se ele se aplicasse apenas as proprias classes e classes filhas seria muito interessante.

Voltando a pergunta principal. Quando usar protected.

Costumo usar protected em membros (métodos ou atributos) que devem ser herdados, qd as classes filhas tem autoridade para saber da existência deles. O pessoal está muito bitolado a definir q variável de instancia eh private para se ter encaspulamento e esquecem o protected. Dai classes filhas q teriam total propriedade para conhecer determinados membros, perdem esse direito tendo q ter acesso via get e set.

Para exemplificar umj atributo nome da classe Pessoa, deveria ser protected, daí a classe Cliente q herda de Pessoa teria acesso direto. Afinal cliente TEM um nome! Deve haver henraça sim, caso seja private não haverá herança e o acesso terá q ser dado por get e set.

O pecado do protected de Java é aquele mesmo, daí algumas pessoas justificam com isso o eterno uso dos privates. Porém ainda há uma defesa =P Normalmente classes q ficam no mesmo pacote só quem tem acesso é vc ou alguem do seu grupo de desenvolvimento. Se vc destribui uma framework ou biblioteca ngm poderá botar classes nos seus pacotes e quebrar o encapsulamento pq vc usou protected. Bem... essa eh minha opinião. Quem tiver outras bota ai q a gente discute. Sempre quisa saber opiniões dos demais sobre esse assunto.

[]´s
Se vc apenas precisar de uma única instancância de Agenda, podes pensar em um singleton. O singleton te dá o controle total da única instância de agenda, vc precisa de mais de uma instância?
tenho um campo id na minha entidade cliente da forma como vc está descrevendo exceto que o generation type é auto, mas com certeza esse não é o problema.
Tenho uma classe Cliente que tem um atributo Collection<Enderecos> e uma entidade Endereco que tem uma referência para um Cliente. Gostaria de fazer um relacionamento bidirecional e mapeie da seguinte forma:



Porém o hibernate está levantando uma exceção dizendo que o campo cliente_id está null, então tirei a declaração nullable = false e então ele não mas levantou a exceção, porém ele põe null nesse campo, e com isso não consegue referenciar o cliente no objeto Endereco. Alguem faz ideia do que possa ser?

Desde já agradeço.
Valeu kra, ajudou bastante com certeza
Tenho uma classe Cliente que tem como um atributo um conjunto de strings que representa os telefones desse cliente Set<String> telefones. Gostaria de saber como faço para mapear usando as annotations do JPA esse conjunto para uma tabela de telefones, com uma coluna para o id do telefone, outra para o id do cliente e outra com a string do telefone propriamente dito. Seria um relacionamento one to many de clinete com telefone, porém como a classe String é da biblioteca de java eu n tenho como mapeá-la. Alguem faz ideia de como posso fazer isso?

Desde já agradeço.
É uma apostila legal pra dar um start em java web.

http://www.caelum.com.br/caelum/curso-21.jsp
Pesquisei na net e encontrei uma lib chamda javassist baixei e inlcuir no classpath, agora sim td funcionaou, porem eh bem estranho td isso, pq eu ja li sobre JPA em inúeras fontes, e em momento algum cita-se essa lib, nem mesmo na dacumentação do hibernate, pelo menos eu n encontrei em canto algum, só fui atras dela por conta do NoClasDefFoundError q falava de uma classe num pacote javassist. É bem estranho, algum de vcs q trabalham com JPA e HIbernate ja tiveram q incluir tal lib no classpath?
Seque uma imagem em anexo com todas as libs que estão importadas no meu classpath.
Para usar annotations com hibernate vc deve ter a biblioteca de annotations do hibernate mais a biblioteca da JPA e importá-las no seu classpath.
marceloquinta wrote:Você já tentou criar um bean, apontando para o EntityManageFactory?



Meus beans estão nos pacotes indicados no persistence.xml, o erro esta acontencedo quando tento criar a EntitymanagrFactory, segue a linha qu está levantando o erro:

Estou obtendo a seguinte mensagem de erro ao utilizar a JPA com o Hibernate:



Alguém já passou por isso ou sabem oq pode ser?
Já utilizei a busca do GUJ em busca das palavras chave "javassist/bytecode/ClassFile" e não obtive sucesso.
Apelando para o "oráculo" (google) obtive informações que esse erro está ligado com a forma como os bytecodes estão sendo manipulados, ou seja é algo bem "embaixo", mas n faço ideia do que seja.

Meu persistence.xml se encontra na pasta META-INF dentro da pasta src e está com a seguinte estrutura.



Vale lembrar que essa aplicação é desktop.

Desde já agradeço.
Outra saída é vc iterar sobre o conjuntode chaves do seu mapa, alguma coisa mais ou menos assim:



Mas estou achando estranho vc falar em atributos da sua equipe, quando seu mapa é de string por string, emntão sua equipe n tem uma entidade própria, e é apenas denotada por uma string. explica isso melhor kra, tá meio confuso.
Kra, o HashMap só permite uma única entrada com a mesma chave. Se sua chave é a matricula então vc n vai ter como ter mais de uma equipe com a mesma chave.
 
Índice dos Fóruns » Perfil de bcartaxo » Mensagens enviadas por bcartaxo
Ir para:   
Powered by JForum 2.1.8 © JForum Team