2. Persistência
"Na ciência da computação, persistência refere
a característica de estado que sobrevive além
do processo no qual é criado. Sem esta
capacidade, o estado existirá apenas na
memória RAM, e pode se perder quando
ocorrer a interrupção da alimentação de
energia, como quando o computador é
desligado." - Wikipedia
3. Mundo OO
Persistência é uma necessidade primária de
aplicações. Em algum momento é necessário
armazenar dados, inclusive em aplicações OO.
Gerenciadores de Banco de Dados OO:
● Caché
● db4o
● ObjectDB
4. Realidade
● Persistência apoiada em gerenciadores não
OO, normalmente relacionais;
● Produtos e marcas fortes no mercado,
como: Microsoft SQL Server, Oracle,
MySQL;
● Legado: regras de negócio escritas para o
SGBD;
● Padronização da SQL;
● Investimentos altíssimos em SQL;
5. Solução
"Object-relational mapping (ORM, O/RM,
and O/R mapping) in computer software is a
programming technique for converting data
between incompatible type systems in object-
oriented programming languages. This
creates, in effect, a "virtual object database"
that can be used from within the programming
language. There are both free and
commercial packages available that perform
object-relational mapping, although some
programmers opt to create their own ORM
tools." - Wikipedia
6. Vantagens
● Um monte de tarefas relativas a banco de dados é feita
automaticamente.
● Nem todo mundo escreve bons codigos SQL, o ORM
escreve SQL padronizado.
● Iniciar transações, usar comandos preparados, etc é
simples como chamar um método.
● Se encaixa naturalmente ao estilo de código corrente.
● Abstrai o banco de dados.
● O model fica fracamente acoplado ao código de infra
para banco.
● Permite uso de vantagens OOP como herança no
model sem dor de cabeça.
8. Mapeamentos
São conhecidas as seguintes estratégias de
mapeamento:
● Propriedades
● Um para um;
● Um para muitos;
● Muitos para muitos;
● Componentes
● Herança;
18. NHibernate
O NHibernate é um ORM Open-Source, que
surgiu através do Hibernate, voltado
exclusivamente para desenvolvedores Java,
sendo a princípio era um port do Hibernate,
mas passou a ser um projeto independente.
Sendo assim, apresenta uma certa maturidade,
principalmente por ser um framework com uma
equipe colaborando ativamente.
29. Linq
var user = from u in session.Query<User>()
where u.Username == username
select u;
var user = session.Query<User>().Where(u =>
u.Username == username);
31. Recursos
Argumentos OODB vs RDB
http://stackoverflow.com/questions/800/object-oriented-vs-relational-databases
http://www.leavcom.com/db_08_00.htm
Sobre model/code/database first
http://social.msdn.microsoft.com/Forums/en-US/eb695b8b-0638-4181-aad5-
a0ab7a925779/which-one-to-chose-model-first-code-first-or-db-first
NHibernate Queries
http://stackoverflow.com/questions/3262642/nhibernate-hql-vs-criteriaapi-vs-queryover-vs-linq-
performance
Frameworks ORM para .Net
http://www.princiweb.com.br/blog/programacao/veja-o-que-e-orm-e-os-frameworks-disponiveis-
para-net/
Manual NHibernate
http://nhforge.org/doc/nh/en
Blog do Ayende
http://ayende.com/blog/