210 likes | 292 Views
Introdução ao Hibernate. Cássio Freire Rafael Duarte. Introdução. Hibernate é um mecanismo simples que permite persistir objetos Java em banco de dados. ------------------------------------------------------------------------ Definição do mapeamento objeto relacional em XML
E N D
Introdução ao Hibernate Cássio Freire Rafael Duarte
Introdução • Hibernate é um mecanismo simples que permite persistir objetos Java em banco de dados. ------------------------------------------------------------------------ • Definição do mapeamento objeto relacional em XML • Linguagem de consulta OO (HQL - Hibernate Query Language) • Overhead mínimo em relação à JDBC • overhead < 10% X benefícios (separação em camadas, baixo acopl.,etc)
Características • Relacionamentos (many-to-one, many-to-many, one-to-one, etc) • Dialetos (MySQLDialect, OracleDialect, PostgreSQLDialect, etc) • Identificadores • vm: gera identificadores de tipo long, short, int. • sequence: utiliza a sequencia das bases de dados DB2, PostgreSQL, Oracle, SAP DB, podendo ser long, shor ou int. • hilo: utiliza um algoritimo para gerar identificadores do tipo long, short, ou int. • uuid.hex, native, etc …
Banco de Dados suportados • DB2 7.1, 7.2; • MySQL M3.23; • PostgreSQL 7.1.2, 7.2, 7.3; • Oracle 8i, 9i; • Sybase 12.5; • Interbase 6.0.1 (Open Source) with Firebird; • HypersonicSQL 1.61, 1.7.0; • Microsoft SQL Server 2000; • Outros • Mckoi i SQL 0.93; Progress 9; Pointbase Embedded 4.3; SAP DB 7.3; Informix; Ingres; FrontBase
Aplicação Hibernate • Hibernate Properties File • arquivo (xml ou properties) contendo as propriedades de conexão ao banco • Hibernate Mapping (XML) File • arquivo xml que relaciona as propriedades do objeto aos campos da tabela • Hibernate Java Library • HQL (Hibernate Query Language) • Java Class Files • objeto cujo estado vai ser persistido • Database Schema • tabela no banco de dados
Cenário de Teste JSP Servlet SQL HQL BD Hibernate
Server.xml Properties Hibernate Properties File
Hibernate cfg.xml Dialeto Arquivo que mapeia o objeto a ser persistido
Adicionando um Gato // Obtém uma conexão JDBC e instancia uma nova sessão Session session = sessionFactory.openSession(); // Inicia uma nova transação (opcional) Transaction transaction = session.beginTransaction(); Cat cat = new Cat(); cat.setName("princess"); cat.setSex('M'); session.save(cat); transaction.commit(); session.close(); SQL gerado MySQL: INSERT INTO cat (id, name, sex) VALUES (NULL, ‘princess', 'M')
Removendo um Gato // Obtém uma conexão JDBC e instancia uma nova sessão Session session = sessionFactory.openSession(); // Inicia uma nova transação (opcional) Transaction transaction = session.beginTransaction(); session.delete("FROM cat in class example.Cat WHERE cat.id ="+request.getParameter("id")) transaction.commit(); session.close(); SQL gerado MySQL: DELETE FROM cat WHERE id = parametro
Exemplo – Execução • http://172.17.104.53/quickstart
Tecnologia Complementares • Hibernate + Struts • Hibernate + XDoclet + Ant • Hibernate + Design Patterns (DAO, VO, etc) Ex: Utilizar scripts do ANT com o Xdoclet para gerar os arquivos “.hbm.xml” do hibernate Ant – Permite automatizar todos os processos de construção, instalação, configuração, integração, deployment e depuração. Pode enviar e-mail, transferir arquivos via FTP, executar programas, transformar documentos usando XSLT, gerar PDF, etc. XDoclet – Ferramenta usada para geração automática de documentação e código. Combinada com o Ant, automatiza a criação de arquivos XML, aplicações Web, Java Beans, test cases para Junit, etc.
J2EE Patterns(DataAccessObject + ValueObject):. Estrutura Hibernate Encapsula todos os acessos à origem de dados Transportador de Dados
J2EE Patterns(DataAccessObject + ValueObject):. Participantes e Responsabilidades HIBERNATE
Referências • Página Oficial • www.hibernate.org • A Hitchhiker's Guide to Hibernate • http://files.blog-city.com/files/aa/1018/b/HibernateKickstart.html • Hibernate in Action: Practical Object/Relational Mapping • http://www.theserverside.com/resources/HibernateReview.jsp • Hibernate & Tomcat Quickstart • http://www.hibernate.org/hib_docs/examples/quickstart/html/quickstart.html