| 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.
|
 |
|
|