Pojo

Pessoal

O Pojo deve ser considerado somente um espelhamento da tabela do banco?

Um desenvolvedor fez um pojo aqui
e ele fez alguns tratamentos dentro do proprio pojo

@Entity
@Table(schema = "cadunico", name = "FERIADO")
@SequenceGenerator(name = "seq", sequenceName = "cadunico.SEQ_FERIADO", allocationSize = 1)
public class Feriado extends AbstractPojo {

	private static final long serialVersionUID = -3986346336604600675L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
	@Column(name = "COD_FERIADO", unique = true, nullable = false, precision = 6, scale = 0)
	private Long codFeriado;

	@Temporal(TemporalType.DATE)
	@Column(name = "DT_FERIADO", nullable = false)
	private Date dtFeriado;

	@Column(name = "DESC_FERIADO", nullable = false, length = 50)
	private String descFeriado;

	public void setCodFeriado(Long codFeriado) {
		if (codFeriado == 0){
			codFeriado = null;
		}
		this.codFeriado = codFeriado;
	}

	public Long getCodFeriado() {
		return codFeriado;
	}

	public Date getDtFeriado() {
		return dtFeriado;
	}

	public void setDtFeriado(Date dtFeriado) {
		this.dtFeriado = dtFeriado;
	}

	public String getDescFeriado() {
		return descFeriado;
	}

	public void setDescFeriado(String descFeriado) {
		this.descFeriado = descFeriado;
	}

	@Override
	public Long getId() {
		return getCodFeriado();
	}

	@Override
	public void setId(Long id) {
		setCodFeriado(id);
	}

	[b]public String getDtFeriadoStr() {
		if (dtFeriado != null){
			return DateUtil.dateToString(dtFeriado, DateUtil.FORMATO_DATA);
		}
		else{
			return null;
		}
	}

	public void setDtFeriadoStr(String dtFeriado) {
		try {
			this.dtFeriado = DateUtil.stringToDate(dtFeriado, DateUtil.FORMATO_DATA);
		}
		catch (ParseException e) {
			this.dtFeriado = null;
		}
	}[/b]
}

O que está em negrito é um tratamento, onde converte a data (getDtFeriadoStr / setDtFeriadoStr), são métodos que não fazem parte das anotações etc…
isso realmente deve ser feito dentro do pojo? ou deve ser feito em outra classe, exemplo (facade ou BO),
o pojo não deveria ser somente uma classe de anotações espelhando em uma tabela do banco, sem tratamentos, métodos etc…

Primeiro, utilizar a sigla “POJO” nos nomes é tremendamente feio. Bean ou Entity é mais usual
Respondendo à pergunta , sim a classe de entidade pode ter outros métodos e atributos além daqueles necessários à persistencia.
Essa responsabilidade não deve ser coloca em outro objeto.

Mas até onde eu sei Bean é uma coisa completamente diferente de um Pojo, mas claro posso estar enganado.
Quanto ao nome ser feio, me desculpem os defensores do Entity, mas Pojo é muito mais legal.

[]´s

Daniel

[quote=yorgan]Mas até onde eu sei Bean é uma coisa completamente diferente de um Pojo, mas claro posso estar enganado.
Quanto ao nome ser feio, me desculpem os defensores do Entity, mas Pojo é muito mais legal.
[/quote]

como as coisas são.

POJO significa apenas “Classe java que não herda de uma classe de framework” (Plain old java object = velho e bom objeto java: ele é bom porque não herda,tal como os velhos objetos antes da ejb aparecer). Entity refere-se à abstração da responsabilidade do pojo na aplicação.
Por exemplo, odos os Entity do ejb 3 são POJO.