[quote=saoj]Dá ou não dá para ter ActiveRecord em Java ???
Alguém poderia postar um exemplo de como ActiveRecord funciona na prática ?[/quote]
Claro, imagine que você têm uma tablea chamada clientes, com os campos id, nome, nascimento. No ActiveRecord seria:
class Cliente < ActiveRecord::Base
end
Editado: Isso mesmo, sem declarar nem as variáveis. O código está completo (como todos os outros códigos).
Agora digamos que você quer ter certeza que o campo nome e nascimento sejam preenchidos.
class Cliente < ActiveRecord::Base
validate_presence_of :nome, :nascimento
end
obs: Existe vários validade_ e você ainda pode fazer os seus.
Agora, digamos que vc crie uma tabela "pedidos", aonde tem um foreing key para cliente (cliente_id).
[code]class Cliente < ActiveRecord::Base
validate_presence_of :nome, :nascimento
has_many :pedidos
end
class Pedido < ActiveRecord::Base
belongs_to :clientes
end[/code]
Por default já existe um método find generico, mas você pode escrever seus proprios finds. Exêmplo:
[code]class Cliente < ActiveRecord::Base
def self.find_by_nome(user_name)
find(:all, :conditions => [ "name = ?", user_name])
end
def self.find_by_id(user_id)
find(:first, :conditions => [ "id = ?", user_id])
end
end[/code]
Obs: O ActiveRecord já tem como fazer load por id, mas eu criei esse só pra exemplifica a diferença entre :all e :first.
E o mais legal são os acts_as, aonde vc pode dizer o comportamento daquela entidade (pode ser tree, taggable, searchable, etc…). Que você define assim:
class Artigo < ActiveRecord::Base
acts_as_searchable
end
Então essa classe é indexada por um indexador de full text (tipo lucene for ruby), e é so utilizar assim:
Outro legal é o acts_as_taggable, que se não me engano é mantido pelo CV.
E é fácil criar os seus próprios acts_as.
E tem mais, tem por exemplo os campos created_at e updated_at, que se tiver na sua tabela ele preenche automaticamente.
Bom, qualquer error ai, perdão. Eu ainda sou muito novato em Ruby (pra ser honesto, terminei de ler o capitudo sobre ActiveRecord ontem).
obs: Tudo é guiado por padrão, e se o padrão que vc usa não é esse, você pode configurar (tanto o seu padrão, quanto o resto).