Novatec Editora Ltda. [2014].

Tamanho: px
Começar a partir da página:

Download "Novatec Editora Ltda. [2014]."

Transcrição

1 Novatec

2 Authorized Portuguese translation of the English edition of Just Hibernate, ISBN Madhusudhan Konda. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Just Hibernate, ISBN Madhusudhan Konda. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., a qual detém ou controla todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. [2014]. Todos os direitos reservados e protegidos pela Lei de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia Ayako Kinoshita Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: Histórico de impressões: Agosto/2014 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos São Paulo, SP Brasil Tel.: novatec@novatec.com.br Site: Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

3 capítulo 1 O básico do Hibernate Há dois mundos diferentes de software: um é o mundo Java, em que nada além de objetos são conhecidos, enquanto o outro é o mundo do banco de dados relacional, em que os dados reinam. Os desenvolvedores Java sempre trabalham com objetos representando estados e comportamentos que modelam problemas do mundo real. A persistência de objetos é um requisito fundamental em aplicações Java. O estado é modelado de modo a ser persistente em repositórios duradouros para que ele se torne permanente. Por outro lado, quando for o momento de armazenar os dados, é preciso contar com os bancos de dados relacionais, em que os dados são tradicionalmente representados em um formato linha-coluna, com relacionamentos e associações. Trazer os objetos Java para o mundo relacional é sempre uma tarefa desafiadora e complexa para os desenvolvedores Java. Esse processo normalmente é chamado de ORM (Object-Relational Mapping, ou Mapeamento Objeto-Relacional). Este capítulo define o tom para a nossa discussão sobre o Hibernate, inicialmente apresentando o domínio do problema da persistência de objetos. Iremos explorar as tecnologias e as ferramentas, como o JDBC e o Hibernate, que nos ajudam a encarar esse desafio. Iremos comparar e contrastar ambas as tecnologias e aprenderemos de que modo o Hibernate atinge a persistência no modelo objeto-relacional, com facilidade e conforto. 18

4 Capítulo 1 O básico do Hibernate 19 Nascimento do Hibernate Suponha que estejamos fazendo o design de um sistema de Internet banking. Esperamos que o banco mantenha uma cópia segura de nossas contas, dos detalhes pessoais, das preferências e das transações. Isso significa que, para serem duradouros, os dados da aplicação devem ser persistentes em um espaço de armazenamento permanente. No contexto dessa aplicação bancária, por dados persistentes quero dizer o cliente, o endereço, a conta e outros objetos do domínio que possam ter sido modelados em nosso design. Os dados que passarem a ser persistentes por meio de nossa aplicação irão sobreviver à própria aplicação por exemplo, podemos mudar de Internet banking para phone banking, porém os dados criados pela nossa aplicação bancária devem continuar visíveis ou disponíveis, caso sejam necessários. Portanto agora sabemos que tornar os objetos persistentes (seus estados correspondem aos dados que devemos ser persistentes) é um requisito fundamental para a maioria das aplicações do mundo real. Para salvar os dados, precisamos de espaços de armazenamento duradouros, que são chamados de bancos de dados. Há uma enorme variedade de fornecedores de bancos de dados (como Oracle, MySQL, DB2, JavaDB e outros), com uma longa lista de diversos detalhes e acessórios. Como podemos tornar a estrutura de um objeto persistente em um banco de dados? As empresas empregam linguagens orientadas a objeto (por exemplo, o Java) como suas plataformas de programação, e bancos de dados relacionais (por exemplo, Oracle, MySQL, Sybase etc.) para o armazenamento de dados. A existência dessas duas tecnologias de software é mandatória para a maioria das aplicações do mundo real, apesar da chamada incompatibilidade de impedância objeto-relacional. Discutiremos essa incompatibilidade em detalhes no próximo capítulo, porém, para efeito de introdução, explicarei seus principais pontos a seguir: A herança é o princípio fundamental da programação orientada a objetos, sem a qual seria impossível fazer o design das associações entre objetos. Os bancos de dados não compreendem a herança!

5 20 Introdução ao Hibernate Quando se trata do rico conjunto de associações entre objetos, como de um para um (one-to-one), de um para muitos (one-to-many) e de muitos para muitos (many-to-many), os bancos de dados deixam a desejar, pois eles não conseguem suportar todos os tipos de relacionamento. Por fim, há também uma incompatibilidade de identidade: os objetos apresentam tanto identidade quanto igualdade, enquanto os registros do banco de dados são identificados por meio dos valores de suas colunas. Os desenvolvedores atenuam essas diferenças ao empregar vários frameworks desenvolvidos internamente, além de outras soluções técnicas e estratégias. O Java tem um conjunto-padrão de ferramentas para acessar bancos de dados. Esse conjunto é chamado de API (Application Programming Interface, ou Interface de Programação de Aplicativos) JDBC (Java Database Connectivity). A API foi muito bem empregada em aplicações Java até recentemente. Embora ela seja bem adequada para projetos de pequeno porte, a API se torna bem complicada (e, às vezes, fica fora de controle) à medida que a complexidade do modelo do domínio aumenta. A API também inclui muito código boilerplate 1 repetitivo, exigindo que o desenvolvedor faça muita codificação manual. Além do mais, lidar com o mapeamento do modelo objeto-relacional também é uma tarefa árdua! Essa era a questão complicada para os desenvolvedores: todos desejavam ter uma ferramenta simples para tornar os dados persistentes, sem que houvesse muitas dores de cabeça. A equipe do Hibernate identificou as lacunas no espaço de mapeamento ORM e criou um framework simples que facilitaria a vida do desenvolvedor. Foi aí que nasceu o Hibernate! O Hibernate fez sucesso imediato e é, indiscutivelmente, a ferramenta mais popular de código aberto no domínio das ferramentas ORM. O framework foi adotado pela comunidade, da noite para o dia, em virtude de sua simplicidade e dos recursos eficazes. 1 N.T.: Código boilerplate corresponde a códigos que devem ser incluídos em vários lugares com pouca ou nenhuma alteração.

6 Capítulo 1 O básico do Hibernate 21 Domínio do problema Antes de mergulhar de cabeça na exploração do Hibernate em detalhes, vamos dar uma olhada em um exemplo do tipo de problema para o qual o Hibernate foi criado para resolver. Todos nós (bem, pelo menos a maioria de nós) adoramos filmes. Obviamente, não temos todo o tempo do mundo para assistir a esses filmes quando eles chegam ao cinema. Desse modo, criamos uma lista de desejos com os filmes a que gostaríamos de assistir. Por esse motivo, um belo dia, acordamos e decidimos criar uma aplicação simples chamada JustMovies! É uma aplicação baseada em web que permite aos usuários abrir uma conta e criar sua lista de desejos contendo os filmes. Os usuários podem retornar a qualquer momento ao site a fim de modificar ou apagar os filmes de sua lista de desejos. Como devemos armazenar a lista para cada usuário, é mandatório que essa lista de desejos seja armazenada em um repositório duradouro, por exemplo, em um banco de dados. Vamos, inicialmente, criar uma aplicação Java simples que armazene e obtenha os filmes do banco de dados. A aplicação MovieManager Considere uma aplicação Java chamada MovieManager, cuja tarefa principal seja salvar, encontrar e obter filmes de um banco de dados. Além de codificar a aplicação Java, devemos ter uma tabela no banco de dados para armazenar informações sobre o filme. A tabela MOVIES armazenará os dados dos filmes na forma de linhas, conforme mostrado na tabela 1.1. Tabela 1.1 MOVIES ID TITLE DIRECTOR SYNOPSIS 1 Top Gun Tony Scott When Maverick encounters a pair of MiGs 2 Jaws Steven Spielberg A tale of a white shark! Cada linha representará uma instância de Movie em nossa aplicação VanillaMovieManager.

7 22 Introdução ao Hibernate Vamos fingir que vivemos em um mundo sem o Hibernate. Criaremos um pouco de código de exemplo usando o JDBC que, esperamos, vá atender aos nossos requisitos. Usando o JDBC O primeiro passo em qualquer aplicação de banco de dados consiste em estabelecer com ele uma conexão. Uma conexão é uma porta de entrada para o banco de dados para executar as operações sobre os dados a partir de uma aplicação Java. O JDBC disponibiliza uma API de conexão para criar conexões de acordo com as propriedades do banco de dados que forem disponibilizadas. Os fornecedores de bancos de dados normalmente implementam uma classe que armazena o sistema de conexão com o banco de dados por exemplo, para o banco de dados MySQL, é a classe com.mysql.jdbc.driver, e para o banco de dados JavaDB (derby), é org.apache.derby.jdbc.embeddeddriver. Observe que usamos o banco de dados MySQL ao longo do livro. Consulte a seção Configurando o Hibernate na página XX para obter detalhes sobre como criar o projeto e o banco de dados. O método getconnection, exibido no trecho de código a seguir, mostra o procedimento para criar uma conexão com o banco de dados: public class VanillaMovieManager { private Connection connection = null; // Propriedades do banco de dados private String url = "jdbc:mysql://localhost:3307/jh"; private String driverclass = "com.mysql.jdbc.driver"; private String username = "mkonda"; private String password = "mypass";... private Connection getconnection() { try { Class.forName(driverClass).newInstance(); connection = DriverManager.getConnection(url, username, password); catch (Exception ex) { System.err.println("Exception:"+ ex.getmessage());

8 Capítulo 1 O básico do Hibernate 23 return connection; Nesse trecho de código, inicialmente instanciamos a classe driver e, em seguida, obtivemos uma conexão usando DriverManager. Após termos estabelecido a nossa conexão com o banco de dados com sucesso, o próximo passo consiste em criar um método para a persistência e a query de uma entidade Movie. A maior parte dos métodos deverá ser familiar caso você já tenha alguma experiência com código JDBC. Prosseguindo com o desenvolvimento de nossa aplicação, vamos acrescentar alguns métodos que irão salvar os filmes no banco de dados e os acessarão a partir daí. Chamaremos esses métodos de persistmovie e querymovies, respectivamente. A implementação desses métodos está sendo mostrada na listagem de código a seguir: public class VanillaMovieManager { private String insertsql = "INSERT INTO MOVIES VALUES (?,?,?,?)"; private String selectsql = "SELECT * FROM MOVIES";... private void persistmovie() { try { PreparedStatement pst = getconnection().preparestatement(insertsql); pst.setint(1, 1001); pst.setstring(2, "Top Gun"); pst.setstring(3, "Action Film"); pst.setstring(4, "Tony Scott"); // Executa a instrução pst.execute(); System.out.println("Movie persisted successfully!"); catch (SQLException ex) { System.err.println(ex.getMessage()); ex.printstacktrace();

9 24 Introdução ao Hibernate private void querymovies() { try { Statement st = getconnection().createstatement(); ResultSet rs = st.executequery("select * FROM MOVIES"); while (rs.next()) { System.out.println("Movie Found: " + rs.getint("id") + ", Title:" + rs.getstring("title")); catch (SQLException ex) { System.err.println(ex.getMessage()); Eis o que fizemos no código de exemplo anterior: 1. Criamos uma PreparedStatement a partir da conexão usando a string insertsql. 2. Definimos a instrução com valores (valores de colunas em relação a números de colunas: 1 é o ID, 2 é o título etc.). 3. Executamos a instrução que deve inserir o filme na tabela. 4. Fizemos uma query no banco de dados em busca de todos os filmes (Movies) e os exibimos no console. Os passos são basicamente autoexplicativos. Criamos uma PreparedStatement e a executamos após configurar os valores apropriados nela para cada coluna. Após sabermos que a execução foi bem-sucedida, fizemos uma query no banco de dados usando uma instrução SELECT para acessar todos os filmes disponíveis e exibi-los no console. Entretanto há alguns pontos a serem observados: Utilizamos uma instrução SQL predefinida para inserir (ou selecionar) os valores das colunas.

10 Capítulo 1 O básico do Hibernate 25 Definimos os valores das colunas, um por um, usando o número da posição (ou o nome da coluna). Capturamos SQLException caso o código não se comporte adequadamente. Em programas simples, essa maneira de criar as instruções com os valores e executá-las é adequada. No entanto os tipos de programa com os quais iremos lidar no mundo real são muito mais complexos. O JDBC funcionará se você estiver disposto e for capaz de criar e administrar um grande volume de código que não esteja diretamente ligado ao seu problema. Além disso, o uso do JDBC pode representar um desafio se você tiver muitas tabelas ou relacionamentos complexos entre os objetos. Não estamos lidando com os dados em qualquer formato usando nossos princípios favoritos de orientação a objetos! Aperfeiçoando a aplicação para filmes Não seria ideal chamar um método como persist() em uma classe utilitária para que o objeto Movie se tornasse imediatamente persistente? Afinal de contas, somos programadores orientados a objetos; desejar esse recurso não é nenhum pecado! Para alcançar esse objetivo, criaremos um POJO (Plain Old Java Object) que representa um filme. Para todo filme de celuloide disponibilizado (ou a ser disponibilizado), teremos um novo objeto Movie criado. O POJO Movie está sendo definido aqui: public class Movie { private int id = 0; private String title = null; private String synopsis = null; private String director = null;... // Setters e getters foram omitidos

11 26 Introdução ao Hibernate Portanto tudo de que precisamos agora é de um recurso que torne esse objeto POJO persistente em nossa tabela MOVIES do banco de dados essencialmente convertendo o modelo de objeto (o objeto Movie) em um modelo relacional (linha da tabela). Vamos criar uma classe MoviePersistor que possa realizar essa tarefa: // Pseudocódigo public class MoviePersistor { public void persist(movie movie) { // O código para tornar um filme persistente deve ser inserido aqui public void fetch(string title) { // O código para acessar um filme pelo título deve ser inserido aqui... Ainda não implementamos as funcionalidades persist ou fetch; esse não é o ponto principal do programa. Agora vamos ver como é fácil tornar qualquer objeto Movie persistente por meio da classe utilitária MoviePersistor, como demonstrado neste teste de exemplo: // Pseudocódigo MoviePersistor moviepersistor = new MoviePersistor(); Movie movie = new Movie(); movie.setid(1); movie.settitle("jaws"); movie.setdirector("steven Spielberg"); movie.setsynopsis("story of a great white shark!"); moviepersistor.persist(movie); Não é incrível? Um POJO que representa um filme de celuloide torna-se persistente na forma de uma linha de registro em uma tabela do banco de dados modelo de objetos para modelo relacional por meio de uma classe utilitária! Tudo vai bem até agora, exceto pelas implementações propriamente ditas dos métodos persist e fetch. Para implementar essas funcionalidades, precisamos não só do recurso de conexão com um banco de dados, mas

12 Capítulo 1 O básico do Hibernate 27 também de um mecanismo para converter o objeto em uma linha (por exemplo, mapeando as propriedades de nosso objeto para as colunas do banco de dados). Poderíamos criar nosso próprio framework de classes para ocultar os detalhes dessas conversões e os mecanismos de persistência (que podem usar as boas e velhas instruções JDBC nos bastidores). Embora implementar esse framework não seja uma ciência incrivelmente complicada, seria um trabalho inconveniente e que iria consumir tempo, para começar. Com o passar do tempo, os requisitos de persistência de uma empresa podem ser alterados ou pode até mesmo haver uma migração do banco de dados, por exemplo, de Oracle para MySQL. Isso significa que o framework deverá ser bastante genérico e levar em consideração uma grande variedade de requisitos funcionais e técnicos antes de atingir seu objetivo. Em minha experiência, frameworks desse tipo, desenvolvidos internamente, são impossíveis de administrar, são inflexíveis, não permitem escalação e, às vezes, ficam desatualizados também! A menos que o requisito seja realmente muito específico para uma empresa (sua empresa pode querer efetuar a persistência de dados em Marte!), recomendo fortemente que você pesquise na Internet e escolha um framework que satisfaça as nossas premissas de forma bastante aproximada. Porém, antes de começar a criar esse código, deixe-me ser o portador de boas notícias (caso você ainda não tenha ouvido falar disto): já existe um ótimo framework que faz exatamente isso persistência de objetos em um banco de dados relacional, e ele se chama Hibernate! Agora que temos um framework para persistência, vamos ver como o mesmo método que faz nosso filme ser persistente pode ser refatorado por meio do Hibernate: public class BasicMovieManager { private void persistmovie(movie movie) { Session session = sessionfactory.getcurrentsession();... session.save(movie);...

13 28 Introdução ao Hibernate Você percebeu que salvamos a instância de Movie em um banco de dados ao executar uma única linha de código: session.save(movie)? Não é isso que queríamos anteriormente uma classe que simplesmente salvaria objetos persistentes de maneira orientada a objetos? As classes da API do Hibernate expõem diversos métodos para manipular objetos Java com facilidade e conforto. Não precisamos criar trechos de código usando o JDBC nem arregaçar as mangas e implementar um framework enquanto coçamos nossas cabeças e consumimos litros de cafeína! O Hibernate oferece o recurso de persistência de objetos; entretanto há uma configuração e um mapeamento que devem ser feitos uma só vez para que o Hibernate possa saber quais são as nossas intenções. Exploraremos esses detalhes de forma bem geral nas próximas seções. Usando o Hibernate Os passos-padrões a serem seguidos para criar uma aplicação Hibernate são: 1. Configurar a conexão com o banco de dados. 2. Criar as definições de mapeamento. 3. Efetuar a persistência das classes. Aqui estão os passos comuns envolvidos no desenvolvimento da versão Java-Hibernate de nossa aplicação MovieManager: 1. Crie um objeto Movie do domínio (POJOs do modelo de domínio, que representam tabelas de dados). 2. Crie arquivos de configuração, por exemplo, os arquivos com as propriedades do Hibernate e os de mapeamento. 3. Crie um cliente de teste que administre (insira/atualize/apague/ acesse) os filmes (Movies). Já preparamos um POJO Movie, como mostrado em trechos anteriores de código, portanto não é preciso repetir essa parte novamente.

14 Capítulo 1 O básico do Hibernate 29 O coração de qualquer aplicação Hibernate está em sua configuração. Existem duas partes da configuração, necessárias a qualquer aplicação Hibernate: uma para criar as conexões com o banco de dados e outra para criar o mapeamento objeto-tabela. Como ocorre no JDBC, devemos fornecer informações do banco de dados para a nossa aplicação para que ela possa estabelecer uma conexão e manipular os dados. A configuração de mapeamento define quais propriedades dos objetos serão mapeadas para quais colunas da tabela. Não entraremos em detalhes aqui, pois o objetivo deste capítulo é apresentar uma introdução rápida a você! Vamos dar uma olhada nos passos-padrões para criar uma aplicação Hibernate nas seções a seguir. Configurando a conexão com o banco de dados Para criar uma conexão com o banco de dados, o Hibernate deve conhecer os detalhes de nosso banco de dados, as tabelas, as classes e outros mecanismos. Essas informações, de modo ideal, são disponibilizadas na forma de um arquivo XML (normalmente chamado de hibernate.cfg.xml) ou como um arquivo texto simples, contendo pares de nome/valor (normalmente chamado de hibernate.properties). Neste exercício, usaremos o estilo XML. Chamamos esse arquivo de hibernate.cfg.xml para que o framework possa carregá-lo automaticamente. O trecho de código a seguir descreve um arquivo de configuração desse tipo. Como estou usando o MySQL como banco de dados, os detalhes da conexão com o banco de dados MySQL são declarados neste arquivo hibernate.cfg.xml: <hibernate-configuration> <session-factory> <property name="connection.url"> jdbc:mysql://localhost:3307/jh </property> <property name="connection.driver_class"> com.mysql.jdbc.driver </property>

15 30 Introdução ao Hibernate <property name="connection.username"> mkonda </property> <property name="connection.password"> password </property> <property name="dialect"> org.hibernate.dialect.mysql5dialect </property> <mapping resource="movie.hbm.xml" /> </session-factory> </hibernate-configuration> Esse arquivo contém informações suficientes para estabelecer uma conexão ativa com um banco de dados MySQL. As propriedades anteriores também podem ser expressas na forma de pares nome/valor. Por exemplo, aqui estão as mesmas informações representadas como pares nome/valor em um arquivo texto chamado hibernate.properties: hibernate.connection.driver_class = com.mysql.jdbc.driver hibernate.connection.url = jdbc:mysql://localhost:3307/jh hibernate.dialect = org.hibernate.dialect.mysql5dialect connection.url indica o URL com o qual devemos nos conectar, driver_class representa a classe Driver relevante para estabelecer uma conexão e dialect indica o dialeto de banco de dados que estamos usando (MySQL, nesse caso). Se você estiver seguindo a abordagem do arquivo hibernate.properties, observe que todas as propriedades são prefixadas com hibernate e seguem um padrão hibernate.* properties, por exemplo. Além de fornecer as propriedades de configuração, também é preciso disponibilizar os arquivos de mapeamento e suas localizações. Como mencionado anteriormente, um arquivo de mapeamento contém o mapeamento entre propriedades de objetos e os valores das colunas. Esse mapeamento é feito em um arquivo separado, normalmente com sufixo igual a.hbm.xml.

16 Capítulo 1 O básico do Hibernate 31 Devemos fazer com que o Hibernate conheça nossos arquivos de definição de mapeamentos ao incluir um elemento com a propriedade mapping no arquivo de configuração anterior, como mostrado aqui: <hibernate-configuration> <session-factory>... <mapping resource="movie.hbm.xml" /> <mapping resource="account.hbm.xml" /> <mapping resource="trade.hbm.xml" /> </session-factory> </hibernate-configuration> O atributo resource indica o nome do recurso de mapeamento que o Hibernate deve carregar. Nesse caso, Movie.hbm.xml é o arquivo de mapeamento e contém detalhes de como um objeto Movie é mapeado para uma tabela MOVIE. Você pode ver também outros arquivos de mapeamento, como Account.hbm.xml e Trade.hbm.xml. Daremos uma olhada nesses arquivos em breve. O que o Hibernate faz com esse arquivo de propriedades? O framework Hibernate carrega esse arquivo para criar uma SessionFactory, que é uma classe global threadsafe (segura para thread) de factory, a fim de criar Sessions. O ideal seria criar uma única SessionFactory e compartilhá- -la por toda a aplicação. Observe que uma SessionFactory é definida para um, e somente um, banco de dados. Por exemplo, se houver outro banco de dados, além do MySQL, você deverá definir a configuração relevante em hibernate.hbm.xml a fim de criar uma SessionFactory separada para esse banco de dados também. O objetivo de SessionFactory é criar objetos Session. Session é um gateway para o nosso banco de dados. Cuidar de todas as operações do banco de dados, como salvar, carregar e obter registros das tabelas relevantes, é tarefa de Session. O framework também mantém uma mídia de transações em torno de nossa aplicação. As operações envolvendo acesso ao banco de dados são encapsuladas em uma única unidade de trabalho chamada transação. Portanto todas as operações nessa transação devem ser bem- -sucedidas ou deverá ocorrer um rollback (reversão).

17 32 Introdução ao Hibernate Tenha em mente que a configuração é usada para criar uma Session por meio de uma instância de SessionFactory. Antes de prosseguir, observe que os objetos Session não são thread-safe e, desse modo, não devem ser compartilhados por classes diferentes. Veremos os detalhes sobre como esses objetos devem ser usados à medida que avançarmos neste livro. Criando definições de mapeamento Depois que tivermos a configuração de conexão pronta, o próximo passo será preparar o arquivo Movie.hbm.xml, constituído de definições de mapeamento objeto-tabela. O trecho de código XML a seguir define o mapeamento de nosso objeto Movie para a tabela MOVIES: <hibernate-mapping> <class name="com.madhusudhan.jh.domain.movie" table="movies"> <id name="id" column="id"> <generator class="native"/> </id> <property name="title" column="title"/> <property name="director" column="director"/> <property name="synopsis" column="synopsis"/> </class> </hibernate-mapping> Há muita coisa acontecendo nesse arquivo de mapeamento. O elemento hibernate-mapping armazena todas as definições de mapeamento de classe para tabela. Mapeamentos individuais por objeto são declarados dentro do elemento class. O atributo name da tag class refere-se à classe com.madhusudhan.jh.domain.movie de nosso domínio POJO, enquanto o atributo table refere-se à tabela MOVIES na qual os objetos se tornarão persistentes. As propriedades restantes representam o mapeamento das variáveis do objeto para as colunas da tabela (por exemplo, id é mapeado para ID, title para TITLE, director para DIRECTOR etc.). Cada objeto deve ter um identificador único semelhante a uma chave primária da tabela. Definimos esse identificador ao implementar a tag id usando uma estratégia do tipo native (nativa). Não preste muita atenção a esse id e à estratégia de sua geração por enquanto. Discutiremos esses aspectos em detalhes nos próximos capítulos.

18 Capítulo 1 O básico do Hibernate 33 Persistência dos objetos Agora que a configuração está fora de nosso caminho, vamos criar um cliente que torne os objetos persistentes com a ajuda do Hibernate. Precisamos da instância de SessionFactory a partir da qual criaremos um objeto Session. O trecho de código a seguir mostra a configuração inicial para a criação da classe SessionFactory: public class BasicMovieManager { private SessionFactory sessionfactory = null; // Criando SessionFactory usando a versão 4.2 do Hibernate private void initsessionfactory(){ Configuration config = new Configuration().configure(); // Cria um Registry com as propriedades de nossa configuração ServiceRegistry serviceregistry = new ServiceRegistryBuilder().applySettings( config.getproperties()).buildserviceregistry(); // Cria a factory de sessões sessionfactory = config.buildsessionfactory(serviceregistry);... Observe que não temos de mencionar explicitamente os arquivos de mapeamento ou de configuração ou de propriedades, pois o runtime do Hibernate procura nomes de arquivo default como hibernate.cfg.xml ou hibernate.properties no classpath e os carrega. Se tiver um nome que não seja igual ao default, não se esqueça de passá-lo como argumento como em configure("my-hibcfg.xml"), por exemplo. As configurações anteriores para a inicialização da classe SessionFactory são adequadas à versão mais recente do Hibernate na época desta publicação, que era a versão 4.2. A versão 4.x do Hibernate introduziu os registros de serviço, que veremos nos capítulos seguintes.

19 34 Introdução ao Hibernate Em versões 3.x, o método configure verifica o classpath à procura de um arquivo chamado hibernate.cfg.xml (ou hibernate.properties) para criar um objeto Configuration. Esse objeto de configuração então é usado para criar uma instância de SessionFactory. Se uma verão de Hibernate anterior a 4.x estiver sendo usada, utilize o código a seguir para inicializar SessionFactory: // Criando SessionFactory usando a versão 3.x do Hibernate private void init3x() { sessionfactory = new Configuration().configure().buildSessionFactory(); Em versões 4.x, isso foi levemente alterado pela introdução de ServiceRegistry, que recebe um Map contendo as propriedades, preenchido a partir de um objeto Configuration, como acabou de ser mostrado. Independentemente da versão que você escolher, a SessionFactory criada será a mesma, assim como as Sessions. Criando o método para persistência Agora vamos ver o verdadeiro funcionamento da classe BasicMovieManager. O método para persistência é definido na classe para tornar um filme persistente por meio do método save de Session. Isso está sendo mostrado no trecho de código a seguir: public class BasicMovieManager { private void persistmovie(movie movie) { Session session = sessionfactory.getcurrentsession(); session.begintransaction(); session.save(movie); session.gettransaction().commit(); Parece simples, não é mesmo? Não escrevemos nenhum código desnecessário ou repetitivo e focamos na função principal, que é salvar o objeto.

20 Capítulo 1 O básico do Hibernate 35 No trecho de código anterior, inicialmente obtivemos uma Session da factory. Em seguida, criamos um objeto de transação (conheceremos melhor as transações nos capítulos seguintes) e tornamos o objeto de entrada Movie persistente usando o método session.save. Por fim, efetuamos o commit da transação e Movie é armazenado permanentemente em nosso banco de dados. Testando os dados persistentes Temos duas maneiras de testar os dados persistentes: executar uma query SQL nativa no banco de dados ou criar um cliente para teste. Podemos executar a query SQL no banco de dados usando algo como SELECT * FROM MOVIES, que acessa todos os registros armazenados por nossa aplicação. A query SELECT do SQL exibe a saída mostrada na tabela 1.2. Tabela 1.2 MOVIES ID TITLE DIRECTOR SYNOPSIS 1 Top Gun Tony Scott Maverick is a hot pilot 2 Jaws Steven Spielberg A tale of a white shark! De modo alternativo, podemos criar outro método em nosso cliente de teste, por exemplo, findmovie. Esse método usará o método load de Session para acessar o registro do banco de dados. Chamamos o método findmovie passando o ID do filme como argumento, a fim de acessar o filme: public class BasicMovieManager {... private void findmovie(int movieid) { Session session = sessionfactory.getcurrentsession(); session.begintransaction(); Movie movie = (Movie)session.load(Movie.class, movieid); System.out.println("Movie:"+movie); session.gettransaction().commit();

21 36 Introdução ao Hibernate O método load da API de Session acessa o objeto Movie apropriado para um dado identificador. Se estiver pensando que o Hibernate pode estar usando uma instrução SELECT nos bastidores, então você está certo! Caso queira acessar todos os filmes da tabela, crie um objeto Query com a string de query simples "from Movie" e execute-a. O método list da query (criada por meio de session.createquery) retorna uma lista de filmes na forma de uma List, como mostrado a seguir: public class BasicMovieManager { // Acessando todos os filmes private void findall() { Session session = sessionfactory.getcurrentsession(); session.begintransaction(); List<Movie> movies = session.createquery("from Movie").list();* session.gettransaction().commit(); System.out.println("All Movies:"+movies);... Configurando o Hibernate Criar um projeto Hibernate é fácil. O projeto que preparei para este livro é um código baseado em Maven, desenvolvido no IDE NetBeans. Não entrarei em detalhes sobre como configurar o ambiente, porém os passos a seguir deverão ajudar você. Embora eu tenha usado o NetBeans para desenvolver o código, você poderá usar qualquer um de seus IDEs favoritos para trabalhar neste projeto. Além do mais, você pode trocar o MySQL por qualquer outro banco de dados, incluindo aqueles em memória como o Derby ou o HyperSQL. Inicialmente, configure o ambiente essencial de desenvolvimento, constituído do JDK 5.0+, do IDE NetBeans, do Maven e do banco de dados MySQL (pode ser que você já tenha esse ambiente!). Eu usei o JDK 6, o NetBeans 7.3, o Maven 3.2 e o MySQL 5.2 para desenvolver o código, e a versão do Hibernate é a Final.

22 Capítulo 1 O básico do Hibernate 37 Depois que tiver organizado o seu ambiente de desenvolvimento, o próximo passo é criar um projeto Maven no NetBeans (ou no Eclipse). Adicione as dependências apropriadas do Hibernate no arquivo pom.xml, como mostrado aqui: <project xmlns=" xmlns:xsi=" xsi:schemalocation=" <modelversion>4.0.0</modelversion> <groupid>com.madhusudhan</groupid> <artifactid>just-hibernate</artifactid> <version>0.0.1-snapshot</version> <dependencies> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-core</artifactid> <version>4.2.3.final</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.18</version> </dependency>... </project> O Maven resolverá as dependências relacionadas ao criar o projeto. Recomendo fazer o download do código-fonte do livro e importar o projeto em seu IDE favorito. O próximo passo é configurar o seu banco de dados. Se você já tiver um banco de dados, esse passo poderá ser ignorado. Estou usando o banco de dados MySQL. Faça o download do pacote MySQL mais recente e instale-o em seu computador (pode ser que seja necessário consultar o manual para configurá-lo corretamente). Você pode experimentar executar os exemplos deste livro usando qualquer outro banco de dados.

23 38 Introdução ao Hibernate Depois que tiver o MySQL (ou qualquer outro banco de dados) instalado, não se esqueça de criar um esquema chamado JH, como mostrado aqui: CREATE SCHEMA JH; A maioria das tabelas desse projeto foi gerada automaticamente pelo Hibernate, ou seja, o Hibernate cria as tabelas (caso elas não existam) durante o processo de leitura de sua configuração. É preciso definir uma propriedade, hbm2ddl.auto, no arquivo de configuração do Hibernate (hibernate.cfg.xml) com o valor adequado para que essa geração automática ocorra, da seguinte maneira: <property name="hbm2ddl.auto">update</property> Quando essa propriedade é definida, as tabelas são criadas automaticamente caso não existam, ou são atualizadas se houver uma mudança no esquema da tabela. Nunca use a propriedade hbm2ddl.auto em ambiente de produção! Você deve criar um esquema com todas as definições de tabela e implantá-lo em ambiente de produção por meio de um processo adequado de disponibilização de versão. Basicamente, é isso! Queríamos ter um mecanismo que ocultasse os detalhes de instruções JDBC complicadas e das conexões. Sonhamos em criar métodos utilitários que armazenassem um objeto POJO diretamente no banco de dados, sem o trabalho de escrever/ler as colunas. Realizamos nossos sonhos e desejos ao adotar o Hibernate! Você pode ter muitas perguntas a fazer, porém elas serão esclarecidas à medida que prosseguirmos em nossa jornada, portanto fique ligado!

24 Capítulo 1 O básico do Hibernate 39 Resumo Neste capítulo, conhecemos o domínio do problema do modelo objeto- -relacional ao acompanharmos um exemplo. Embora possamos usar o JDBC para acessar dados, descobrimos que isso exige muitos mapeamentos manuais e código repetitivo desnecessário. Demos um pequeno passo e introduzimos o Hibernate para resolver o problema da persistência de dados de objetos para dados relacionais. De um ponto de vista geral, demos uma olhada nos conceitos de SessionFactory e de Sessions do Hibernate. Refatoramos o exemplo do JDBC de modo a usar o framework Hibernate e tornamos os dados persistentes com sucesso, efetuando queries de POJOs, conforme esperado. No próximo capítulo, discutiremos os fundamentos do Hibernate em detalhes.

Novatec Editora Ltda. [2014].

Novatec Editora Ltda. [2014]. Novatec Authorized Portuguese translation of the English edition of Just Hibernate, ISBN 9781449334376 2014 Madhusudhan Konda. This translation is published and sold by permission of O'Reilly Media, Inc.,

Leia mais

Pete Goodliffe. Novatec

Pete Goodliffe. Novatec Pete Goodliffe Novatec Authorized Portuguese translation of the English edition of Becoming a Better Programmer, ISBN 9781491905531 2014 Pete Goodliffe. This translation is published and sold by permission

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com Persistência de dados com JPA Hélder Antero Amaral Nunes haanunes@gmail.com O que é persistência? A persistência de dados é o fato de pegar um dado e torná-lo persistente, ou seja, salvar em algum banco

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP 2ª Edição Juliano Niederauer Novatec Copyright 2009, 2011 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

Manipulação de Banco de Dados com Java 1. Objetivos

Manipulação de Banco de Dados com Java 1. Objetivos Manipulação de Banco de Dados com Java 1. Objetivos Demonstrar os fundamentos básicos para a manipulação de banco de dados com Java; Apresentar a sintaxe de comandos SQL usados em Java. 2. Definições A

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

Jonathan Stark Brian Jepson

Jonathan Stark Brian Jepson Construindo Aplicativos Android com HTML, CSS e JavaScript Jonathan Stark Brian Jepson Novatec Authorized Portuguese translation of the English edition of titled Building Android Apps with HTML, CSS, and

Leia mais

Persistência de Classes em Tabelas de Banco de Dados

Persistência de Classes em Tabelas de Banco de Dados UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos

Leia mais

Leonardo Gresta Paulino Murta leomurta@gmail.com

Leonardo Gresta Paulino Murta leomurta@gmail.com Leonardo Gresta Paulino Murta leomurta@gmail.com O Que é JDBC? API de acesso a banco de dados relacional do Java Faz uso do driver provido pelo banco de dados Roda SQL (create, insert, update, etc.) no

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no

Leia mais

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,

Leia mais

David Hows Peter Membrey Eelco Plugge

David Hows Peter Membrey Eelco Plugge David Hows Peter Membrey Eelco Plugge Novatec Original English language edition published by Apress, Copyright 2014 by Apress, Inc.. Portugueselanguage edition for Brazil copyright 2015 by Novatec Editora.

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC Java Database Connectivity Provê acesso SQL ao banco de dados Principais

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Aula 1 Acesso a Banco de Dados

Aula 1 Acesso a Banco de Dados Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

Google Android para Tablets

Google Android para Tablets Google Android para Tablets Aprenda a desenvolver aplicações para o Android De smartphones a tablets Ricardo R. Lecheta Novatec Copyright 2012 Novatec Editora Ltda. Todos os direitos reservados e protegidos

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel Acesso a Banco Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel As conexões em Java são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve

Leia mais

Crie Seu Próprio Site

Crie Seu Próprio Site Crie Seu Próprio Site Um guia em quadrinhos para HTML, CSS e WordPress Nate Cooper com ilustrações de Kim Gee Copyright 2014 by Nate Cooper. Title of English-language original: Build Your Own Website,

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

Leia mais

Capture Pro Software. Guia de referência. A-61640_pt-br

Capture Pro Software. Guia de referência. A-61640_pt-br Capture Pro Software Guia de referência A-61640_pt-br Iniciando o Kodak Capture Pro Software Este guia foi projetado para fornecer instruções simples para início rápido, incluindo a instalação e a inicialização

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon MDaemon GroupWare plugin para o Microsoft Outlook Trabalhe em Equipe Usando o Outlook e o MDaemon Versão 1 Manual do Usuário MDaemon GroupWare Plugin for Microsoft Outlook Conteúdo 2003 Alt-N Technologies.

Leia mais

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec Original English language edition published by CA Technologies, Copyright 2011 by CA Technologies.

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com)

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com) JDBC Prof. Márcio Bueno (poonoite@marciobueno.com) JBDC Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o envio de instruções SQL para qualquer banco

Leia mais

Ricardo R. Lecheta. Novatec

Ricardo R. Lecheta. Novatec Ricardo R. Lecheta Novatec Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer

Leia mais

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7 Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7 Para criar um grupo doméstico e compartilhar arquivos é necessário que tenhamos pelo menos dois computadores ligados entre si (em

Leia mais

Design Centrado no Usuário

Design Centrado no Usuário Um guia para o desenvolvimento de aplicativos amigáveis Design Centrado no Usuário Travis Lowdermilk Novatec Authorized Portuguese translation of the English edition of titled User Centered Design, ISBN

Leia mais

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor

Leia mais

Construindo Sites com. CSS e (X)HTML. sites controlados por folhas de estilo em cascata. Maurício Samy Silva. Novatec

Construindo Sites com. CSS e (X)HTML. sites controlados por folhas de estilo em cascata. Maurício Samy Silva. Novatec Construindo Sites com CSS e (X)HTML sites controlados por folhas de estilo em cascata Maurício Samy Silva Novatec capítulo 1 Ferramentas básicas de desenvolvimento Este capítulo destina-se aos iniciantes.

Leia mais

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Banco de Dados Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC Mapeando Objetos para o Modelo Relacional

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA RESUMO DE AULA CRIAÇÃO E MANIPULAÇÃO DO BANCO DE DADOS

Leia mais

Padrões de Projeto em PHP

Padrões de Projeto em PHP Aprendendo Padrões de Projeto em PHP William Sanders Novatec Authorized Portuguese translation of the English edition of titled Learning PHP Design Patterns ISBN 9781449344917 2013 William B. Sanders.

Leia mais

Google Drive: Acesse e organize seus arquivos

Google Drive: Acesse e organize seus arquivos Google Drive: Acesse e organize seus arquivos Use o Google Drive para armazenar e acessar arquivos, pastas e documentos do Google Docs onde quer que você esteja. Quando você altera um arquivo na web, no

Leia mais

edirectory Plataforma ios / Android

edirectory Plataforma ios / Android edirectory Plataforma ios / Android Levando seu site ao próximo nível Conheça o novo aplicativo do edirectory. E seja bem vindo a revolução em aplicativos para Diretórios Online. Mobile Completamente reestruturado

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais Curso de Java Acesso a banco de dados através do Hibernate Todos os direitos reservados Klais Motivação Java é uma linguagem orientada a objetos: Numa aplicação, o uso de objetos é um recurso importante

Leia mais

Desenvolvendo plugins WordPress usando Orientação a Objetos

Desenvolvendo plugins WordPress usando Orientação a Objetos Desenvolvendo plugins WordPress usando Orientação a Objetos por Daniel Antunes danieldeveloper.com @danieldeveloper Introdução Desenvolver plugins WordPress é mais que programar: é obter grandes resultados

Leia mais

INSTRUMENTO NORMATIVO 004 IN004

INSTRUMENTO NORMATIVO 004 IN004 1. Objetivo Definir um conjunto de critérios e procedimentos para o uso do Portal Eletrônico de Turismo da Região disponibilizado pela Mauatur na Internet. Aplica-se a todos os associados, empregados,

Leia mais

Banco de Dados. Banco de Dados. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010

Banco de Dados. Banco de Dados. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos API JDBC Utilizando JDBC Statement PreparedStatement Mapeamento Objeto-Relacional 2 API JDBC 3 API

Leia mais

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A Guia de administração para a integração do Portrait Dialogue 6.0 Versão 7.0A 2013 Pitney Bowes Software Inc. Todos os direitos reservados. Esse documento pode conter informações confidenciais ou protegidas

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

Facebook Instruções de integração com PayPal

Facebook Instruções de integração com PayPal Facebook Instruções de integração com PayPal Há diversas formas de utilizar o PayPal para receber pagamentos na plataforma do Facebook. Primeiro você precisa decidir suas necessidades para a opção mais

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

Principais Comandos SQL Usados no MySql

Principais Comandos SQL Usados no MySql Principais Comandos SQL Usados no MySql O que é um SGBD? Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares)

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Josh Pauli Revisão técnica Scott White. Novatec

Josh Pauli Revisão técnica Scott White. Novatec Josh Pauli Revisão técnica Scott White Novatec Copyright 2013 Elsevier Inc. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 FileMaker Pro 13 Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 2007-2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara,

Leia mais

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco). Permissões de compartilhamento e NTFS - Parte 2 Criando e compartilhando uma pasta - Prática Autor: Júlio Battisti - Site: www.juliobattisti.com.br Neste tópico vamos criar e compartilhar uma pasta chamada

Leia mais

Sumário INTRODUÇÃO... 3. 1. Acesso ao Ambiente do Aluno... 4. 2. Ferramentas e Configurações... 5. 2.1 Ver Perfil... 5. 2.2 Modificar Perfil...

Sumário INTRODUÇÃO... 3. 1. Acesso ao Ambiente do Aluno... 4. 2. Ferramentas e Configurações... 5. 2.1 Ver Perfil... 5. 2.2 Modificar Perfil... Sumário INTRODUÇÃO... 3 1. Acesso ao Ambiente do Aluno... 4 2. Ferramentas e Configurações... 5 2.1 Ver Perfil... 5 2.2 Modificar Perfil... 6 2.3 Alterar Senha... 11 2.4 Mensagens... 11 2.4.1 Mandando

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Computadores XXI: Busca e execução Final

Computadores XXI: Busca e execução Final Computadores XXI: Busca e execução Final A6 Texto 6 http://www.bpiropo.com.br/fpc20060123.htm Sítio Fórum PCs /Colunas Coluna: B. Piropo Publicada em 23/01/2006 Autor: B.Piropo Na coluna anterior, < http://www.forumpcs.com.br/viewtopic.php?t=146019

Leia mais

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP 1.6.7 (xampp-win32-1.6.7-installer.exe), veja aqui.

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP 1.6.7 (xampp-win32-1.6.7-installer.exe), veja aqui. Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. Escrito por Marcio Nakano (marcionakano.com.br) Data: 29/09/2008 Disponível em http:///blog/post/instalando-apache-mysql-coldfusionphp.pdf

Leia mais

Lição 1 - Criação de campos calculados em consultas

Lição 1 - Criação de campos calculados em consultas 1 de 5 21-08-2011 22:15 Lição 1 - Criação de campos calculados em consultas Adição de Colunas com Valores Calculados: Vamos, inicialmente, relembrar, rapidamente alguns conceitos básicos sobre Consultas

Leia mais

Programação com Acesso a Banco de Dados

Programação com Acesso a Banco de Dados Campus Ipanguaçu Curso: Técnico em Informática Programação com Acesso a Banco de Dados AULA 17 ACESSO A BANCO DE DADOS COM JDBC PROF.: CLAYTON M. COSTA 2 011.2 Introdução Aplicação + Banco de Dados: Funcionalidade

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes Demoiselle Report Guide Demoiselle Report Marlon Carvalho Rodrigo Hjort Robson Ximenes Demoiselle Report... v 1. Configuração

Leia mais

Anote aqui as informações necessárias:

Anote aqui as informações necessárias: banco de mídias Anote aqui as informações necessárias: URL E-mail Senha Sumário Instruções de uso Cadastro Login Página principal Abrir arquivos Área de trabalho Refine sua pesquisa Menu superior Fazer

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

GUIA DE CONSULTA RÁPIDA PARA. Instalação do Nokia Connectivity Cable Drivers

GUIA DE CONSULTA RÁPIDA PARA. Instalação do Nokia Connectivity Cable Drivers GUIA DE CONSULTA RÁPIDA PARA Instalação do Nokia Connectivity Cable Drivers Conteúdo 1. Introdução...1 2. Requisitos obrigatórios...1 3. Instalação do Nokia Connectivity Cable Drivers...2 3.1 Antes da

Leia mais

Ricardo Lino Olonca. Novatec

Ricardo Lino Olonca. Novatec Ricardo Lino Olonca Novatec Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Manual AGENDA DE BACKUP

Manual AGENDA DE BACKUP Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as

Leia mais

Pramod J. Sadalage Martin Fowler

Pramod J. Sadalage Martin Fowler Pramod J. Sadalage Martin Fowler Novatec Authorized translation from the English language edition, entitled NOSQL DISTILLED: A BRIEF GUIDE TO THE EMERGING WORLD OF POLYGLOT PERSISTENCE, 1st Edition, 0321826620

Leia mais

DocuWare Mobile ProductInfo. Gerenciamento móvel de documentos. Benefícios

DocuWare Mobile ProductInfo. Gerenciamento móvel de documentos. Benefícios DocuWare Mobile ProductInfo Gerenciamento móvel de documentos O DocuWare Mobile permite acessar os gabinetes de arquivo do DocuWare diretamente em seu smartphone ou tablet. Você pode carregar, visualizar

Leia mais

OCOMON PRIMEIROS PASSOS

OCOMON PRIMEIROS PASSOS OCOMON PRIMEIROS PASSOS O OCOMON ainda não possui um arquivo de Help para atender a todas questões relacionadas ao sistema. Esse arquivo serve apenas para dar as principais instruções para que você tenha

Leia mais

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre

Leia mais

OMT-G Design. Instalação por pacotes

OMT-G Design. Instalação por pacotes OMT-G Design A plataforma Eclipse OMT-G Design não é um software independente, é um plug-in que se utiliza dos mecanismos de extensão do Eclipse que por sua vez é um ambiente de desenvolvimento de software.

Leia mais

Atalhos da Web. Krishna Tateneni Yves Arrouye Tradução: Lisiane Sztoltz

Atalhos da Web. Krishna Tateneni Yves Arrouye Tradução: Lisiane Sztoltz Krishna Tateneni Yves Arrouye Tradução: Lisiane Sztoltz 2 Conteúdo 1 Atalhos da Web 4 1.1 Introdução.......................................... 4 1.2 Atalhos da Web.......................................

Leia mais

Java com Banco de Dados Posgree

Java com Banco de Dados Posgree Java com Banco de Dados Posgree Prof. Luiz Claudio Ferreira de Souza www.luizclaudiofs.blogspot.com 1 Driver para ligação Java e Postgre http://jdbc.postgresql.org/download.html www.luizclaudiofs.blogspot.com

Leia mais

As Leis Fundamentais do Projeto de Software

As Leis Fundamentais do Projeto de Software As Leis Fundamentais do Projeto de Software Max Kanat-Alexander Novatec Authorized Portuguese translation of the English edition of titled Code Simplicity, First Edition ISBN 9781449313890 2011 Max Kanat-Alexander.

Leia mais