ACTIVERECORD E HIBERNATE

JABA 21/01/2010 16:50:37
#332530
Olá pessoal, estou tentando aprender a usar estas tecnologias e estou encontrando algumas dificuldades em aprende-las.

Alguem ae poderia me dar um exemplo de como usa-las com relacionamentos de --> um para muitos e muito para muitos.

Encontrei alguns exemplos no site do macoratti, mas ainda estou necessitando de mais materiais e exemplos praticos.

vlw pessoal, agradeço a atencao.
FABRICIOFREITAG 22/01/2010 11:44:57
#332600
Resposta escolhida
Cara.. isso aí é o leite que eu tirei da pedra, a documentação é escassa/em inglês, os exemplos são todos em C#, mais pra frente você vai começar a encontrar as dúvidas de verdade, tipo [Ô]como lidar com os escopos corrretamente[Ô], [Ô]como tratar concorrência[Ô], é nisso que eu estou travado agora..

Espero ter te ajudado, se descobrir algo interessante me da um toque..

Abraço

Segue o código:


Imports Castle.ActiveRecord

<ActiveRecord([Ô]empresas[Ô])> _
Public Class Empresa

Private _id As Integer
Private _nome As String
Private _ramosAtuacao As IList = New ArrayList
Private _contatos As IList = New ArrayList

<PrimaryKey([Ô]emp_codigo[Ô])> _
Public Overridable Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property

<[Property]([Ô]emp_nome[Ô])> _
Public Overridable Property Nome() As String
Get
Return _nome
End Get
Set(ByVal value As String)
_nome = value
End Set
End Property

<HasAndBelongsToMany(GetType(RamosAtuacao), Table:=[Ô]RamosEmpresas[Ô], ColumnKey:=[Ô]re_idEmpresa[Ô], ColumnRef:=[Ô]re_idRamo[Ô])> _
Public Overridable Property RamosAtuacao() As IList
Get
Return _ramosAtuacao
End Get
Set(ByVal value As IList)
_ramosAtuacao = value
End Set
End Property

<HasMany(GetType(Contato), Table:=[Ô]contatos[Ô], ColumnKey:=[Ô]con_idEmpresa[Ô])> _
Public Overridable Property Contatos() As IList
Get
Return _contatos
End Get
Set(ByVal value As IList)
_contatos = value
End Set
End Property

End Class

<ActiveRecord([Ô]ramoAtuacao[Ô])> _
Public Class RamosAtuacao
Private _id As Integer
Private _nome As String
Private _descricao As String
Private _empresas As IList = New ArrayList

<PrimaryKey([Ô]ram_codigo[Ô])> _
Public Overridable Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property

<[Property]([Ô]ram_nome[Ô])> _
Public Overridable Property Nome() As String
Get
Return _nome
End Get
Set(ByVal value As String)
_nome = value
End Set
End Property

<[Property]([Ô]ram_descricao[Ô])> _
Public Overridable Property Descricao() As String
Get
Return _descricao
End Get
Set(ByVal value As String)
_descricao = value
End Set
End Property

<HasAndBelongsToMany(GetType(Empresa), Table:=[Ô]RamosEmpresas[Ô], ColumnKey:=[Ô]re_idRamo[Ô], ColumnRef:=[Ô]re_idEmpresa[Ô], _
lazy:=True, Inverse:=True)> _
Public Overridable Property Empresas() As IList
Get
Return _empresas
End Get
Set(ByVal value As IList)
_empresas = value
End Set
End Property
End Class

<ActiveRecord([Ô]contatos[Ô])> _
Public Class Contato
Private _id As Integer
Private _nome As String
Private _empresa As Empresa

<PrimaryKey([Ô]con_codigo[Ô])> _
Public Overridable Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property

<[Property]([Ô]con_nome[Ô])> _
Public Overridable Property Nome() As String
Get
Return _nome
End Get
Set(ByVal value As String)
_nome = value
End Set
End Property

<BelongsTo([Ô]con_idEmpresa[Ô])> _
Public Overridable Property Empresa() As Empresa
Get
Return _empresa
End Get
Set(ByVal value As Empresa)
_empresa = value
End Set
End Property
End Class
FABRICIOFREITAG 22/01/2010 11:47:14
#332603
Obs:

Empresas<>Contatos = 1-N
Empresas<>RamosAtuacao = N-N (existem 3 tabelas nesse relacionamento, [ô]empresas[ô], [ô]ramosAtuacao[ô] e [ô]RamosEmpresas[ô], se não conseguiu entender da um toque..)

Abraço
JABA 22/01/2010 19:03:50
#332657
Cara, vc é demais, hoje mesmo farei os testes, se eu alcancar o nivel que vc está, ficarei muiito feliz, vlw muito obrigado.

Deixarei o post aberto por mais um tempinho, depois eu fecho.
JABA 25/01/2010 20:07:37
#332817
Cara, Fiz os testes, conseguir adiantar um monte de coisas, só que nao estou conseguindo salvar as listas no BD. Eu alterei um objeto da lista e utilizei o metodo obj.Update do activerecord, e ae só as propriedades do obj foram salvas, os itens de uma lista que tenho dentro do mesmo obj nao foram alterados. Como informar ao obj que as listas tambem precisam ser salvas ou alteradas?

Pra ficar mais claro, descreve ae os campos das tabelas utilizadas no exemplo e se puder enviar o projeto pra mim ficarei muito grato, meu email é : rodrigosantanaporto@yahoo.com.br

vlw cara, obrigado mais uma vez, t+



FABRICIOFREITAG 30/01/2010 15:15:45
#333239
Cara..Não estou com o código aqui..
tente usar [Ô]Save[Ô] ao invés de [Ô]Update[Ô]..
Tente também procurar um parâmetro para colocar na anotação da lista que não esta salvando eh algo tipo [Ô]Cascade[Ô], e coloque [Ô]All[Ô].. vou ver certinho na segunda feira, quando tiver com o código..
Abraço
FABRICIOFREITAG 04/02/2010 08:56:18
#333575
Conseguiu?
JABA 04/02/2010 18:52:43
#333633
Consegui, mas estou encontrando dificuldades em outras coisas agora, como por exemplo, extrair dados apartir de relacionamentos, fazer consultas utilizando CRITERIA, entre outros, mas de qualque forma, muito obrigado.

abracos
Tópico encerrado , respostas não são mais permitidas