Os pacotes você define como lhe for mais conveniente.
Aqui num cliente adoratam:
br.com.empresa.business [e subpacotes] - ejbs, delegate, façade, VO, …
br.com.empresa.integration [e subpacotes] - dao, …
br.com.empresa.presentation [e subpacotes] - actions, …
br.com.empresa.util [e subpacotes] - exceptions, validadores, …
É legal, mas muito engessado.
DAO e transação não tem nada a ver.
O nome não é o suficiente para você saber???
E não entendi nada que você disse sobre o DAO.
Cara, onde trabalhei eles usavam os nomes dos pacotes separados por funcionalidades, ou seja, cada um tem o nome do que representa no sistema(Venda, Compra…) Dentro deles estavam as separações de camadas(vendas.bussines, compras.dao, estoque.persistence…).
Agora quanto ao DAO, esse padrão é pra isolar negócio de infra-estrutura, seus DAO’s vão fazer o acesso a persistencia pra vc, sem precisar programar isso na classe de negócio. As transactions são de responsabilidades de outras camadas, aí vc pode colocar nos teus beans, usar aspectos, ou deixar por conta do container, vc escolhe. DAO e transaction são assuntos diferentes, apser de se referirem a persistencia.
Pacotes servem para organizar as coisas no projeto e também facilitam o fechamento do deployment (criação do jar de distribuição). A sugestão do Daniel é bastante utilizada.
Particularmente, eu não gosto desse br.com.xxxx na frente (apesar de ser uma recomendação, creio que da própria Sun). Mas sabe de uma coisa, o nome da empresa que possui o software não é constante, empresas mudam de nome, ou são compradas. Organizar o empacotamento baseado nas funcionalidades é uma boa…
Aqui na fábrica adotamos o padrão:
[nomeDoCliente].[nomeDoSistema].[subSistema].[camada]
nomeDoCliente e subSistema é opcional, o nome da camada deixamos um pouco menos verboso e chamamos de:
domain (entity, value-objects, services, repositories)
app (façades, registries, help classes)
view (actions, boundary classes em geral)
Ex.:
hotmotors.atendimento.domain
toyota.estoque.importacao.domain
Espero ter ajudado…
A convenção da Sun evita name clashes (que acotnecem com frequência em oturas paltaformas) mas realmente para qualquer coisa maior que com.sun é uma porcaria.
Quanto á pacotes, eles te ajudam a agrupar os componentes das Camadas mas não são diretamente relacionados com elas.
pacotes (br.com.tropeco.coisa) representam camadas? como q eu vou saber qual pacote faz part da camada controller, ou da view? como q eu vou representar camadas? existe algum padrão para pacots ou eu dou o nome q eu quiser? classes vo tem q ter pacote com br.com.tropeco.vo ou pode ser br.com.tropeco.oqeuqiserebementender? pra q serve transactions se exist o dao?
valeu pessoal! gracias.
tá, mas aí eu só vou saber quais pacotes são de tal camada apenas pela memória? se eu to usano o padrao dao eu posso colocar o nome do pacote de acessos?