quarta-feira, 31 de outubro de 2012

Startegy

public
class SolicitacaoFacadeImpl implements SolicitacaoFacade {
private static final String pacote = "br.com.marketdata.sps.business.impl.";
private final ISolicitacaoFacadeStrategy strategy;
private final Solicitacao solicitacao;
private SolicitacaoDao solicitacaoDao;
public SolicitacaoFacadeImpl() {
super();
strategy = new SolicitacaoFacadeStrategy();
solicitacao = null;
}
 
 
public SolicitacaoFacadeImpl(Solicitacao solicitacao){
if(solicitacao == null){
throw new IllegalArgumentException("Campo solicitacao não pode ser nulo.");
}
String classe = String.format(
"%sFacadeStrategy", solicitacao.getClass().getSimpleName());
try {
@SuppressWarnings("unchecked")
Class<ISolicitacaoFacadeStrategy> clazz = (Class<ISolicitacaoFacadeStrategy>) Class.forName(
pacote+classe);
strategy = clazz.newInstance();
this.solicitacao = solicitacao;
}
catch (ClassNotFoundException e) {
throw new RuntimeException("Erro ao criar o objeto Class de " + classe, e);
}
catch (InstantiationException e) {
throw new RuntimeException("Falha na inicialização de " + classe, e);
}
catch (IllegalAccessException e) {
throw new RuntimeException("Falha ao acessar o construtor padrão de " + classe, e);
}
}
}
Design Paterns

Herança com hibernate




Criando relacionamento com herança usando Hibernate


Classe Solicitacao:

@Inheritance
(strategy=InheritanceType.JOINED)
@Entity
@Table
(name="solicitacao")
public
class Solicitacao implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3839124554732341724L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_solicitacao")
private Integer idSolicitacao;}


Classe SolicitacaoDeEnvio:

@PrimaryKeyJoinColumn
(name="id_solicitacao")
@Entity
@Table
(name="solicitacao_bloqueio")
public
class SolicitacaoDeEnvio extends Solicitacao{
private static final long serialVersionUID = 1L;
}


Classe SolicitacaoDeRecebimento:

@PrimaryKeyJoinColumn
(name="id_solicitacao")
@Entity
@Table
(name="solicitacao_bloqueio")
public
class SolicitacaoDeRecebimento extends Solicitacao{
private static final long serialVersionUID = 1L;
}