http://www.manjukiran.net/
Foi dada uma breve explicação do processo de transformação de operações sobre objetos em operações sobre tabelas em indiano.
1. Application.cfc
[cfcomponent]
[cfset this.name = "orm_cfunited"
[cfset this.ormenabled = true
[cfset this.datasource = "winetag"
[cfset this.dialect = "MSSQL" //Nao peguei
2.Employes.cfc
[cfcomponent persistent="true" entityName="employees" table="tb_employees"
[cfproperty name="employeeId"
[cfproperty name="name"
[cfproperty numberOforders formula="select count from ..."
[cfproperty name="order" fieldtype="many-to-one" cfc="orders" fkcolumn="orderId"]
//cria um array de orders que podem ser pegos a partir da instancia deste funcionario
3. Test.cfm
EntityLoad("employees",1,true) //chama pelo employee id=1
empObj.hasOrders()
[cfdump var="#empObj.getOrders()#"] //mostra o array de orders
Para salvar apenas um campo de um objeto é preciso carregar ele todo em memória e salvar. Não há com o que se preocupar em relação a performance devido ao cache do Hibernate.
4. Como o ORM eh habilitado
Quando a aplicação é iniciada ela ve se o hibernate está habilitado, se estiver cria a configuração se especificada, daí carrega os hbm.xml
Procura então pelos CFCs persistentes, daí o CF gera os arquivos de mapeamento hbm.xml inspecionando o banco.
Gera DDL baseada no dbcreate e cria a session factory do hibernate
5. Mapeamento de herança
.Uma tabela por hierarquia
.Uma tabela por subclasse sem discriminador (cliente / store / restaurant)
.Uma tabela por subclasse com discriminador
6. ORM Sessions
representa a conversasao entre a app e o db
todas operacoes acontecem quando a sessao eh terminada (nao deve ter problemas com lazy loading)
se usar o [cftransaction action="begin"... a sessao eh terminada no fim da transacao
7. Concorrencia
Usa o lock otimista
propriedades, all (todos os campos sao lockados), dirty apenas os campos da sessao, version (versao da coluna colocado no banco), nenhum
ex. name="lastmodified" fieldtype="timestamp|version"
8. Loading
.Imediate fetch="select"
.Lady lazy="true", lazy="extra"
.Eager carrega tudo de uma vez na memoria, util para relacionamentos 1:1
.Batch antecipa dados carregados em memoria
9.Cache
Session level (dados somente para a sessao)
Secondary Level (querys e collections)
no App.cfc
ormsettings.secondarycacheenabled
ormsettings.Cacheprovider (default eh o ehcache)
ormsettings.cacheconfig="ehcache.xml"
uso:
read-write
é possível limpar objetos no cache diretamente e sobrescrever listeners para executar operacoes quando um objeto entrar ou sair do cache
ormsetting.eventhandling="true
É possível fazer o CF gerar as tabelas a partir do cfc automaticamente, com um namingStrategy e methodNamingStrategy
hkhandel@adobe.com
Hemant Khandelwal
Mandar dúvida sobre http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS027D3772-2E98-4d5b-8800-054A62EBF8D9.html
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário