Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Web Construção do Sistema Spring MVC5 + Hibernate Prof. Manoel Ribeiro Aula 6 – Hibernate JPA 1) Na classe de entidade User, incluir as marcações JPA como: @Entity, @Id, @Column, @GeneratedValue @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Size(min = 10, message = "Entre pelo menos 10 caracteres.") @Column(length = 60, nullable = false) private String name; @Email @Column(length = 60, nullable = false) private String email; @Pattern(regexp = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0- 9])(?=.*?[#?!@$%^&*-]).{8,}$", message = "Min 8 com maúscula, minúsculas, letras, números e caraceteres.") @Column(length = 60, nullable = false) private String pwd; @NotNull @Column(length = 10, nullable = false) private String Estado; 2) Incluir coluna de controle de concorrência e versão @Version @Column(nullable = false) protected Timestamp timestamp; 3) Criar arquivo de parâmetros do Hibernate em /src/main/resources/config.properties jdbc.driverClassName = org.postgresql.Driver jdbc.url = jdbc:postgresql://localhost:5432/aula jdbc.username = postgres jdbc.password = aluno hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.hbm2ddl.auto = update 4) Criar database “aula” no postgres usando o pgAdmin Programação Web Construção do Sistema Spring MVC5 + Hibernate Prof. Manoel Ribeiro Aula 6 – Hibernate JPA 5) Criar classe de configuração do Hibernate HibernateConfig em br.estacio.config, conforme código abaixo @Configuration @EnableTransactionManagement @ComponentScan("br.estacio") @PropertySource(value = { "classpath:config.properties" }) public class HibernateConfig { @Autowired private Environment env; @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(restDataSource()); sessionFactory.setPackagesToScan(new String[] { "br.estacio.model" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public DataSource restDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); dataSource.setUrl(env.getProperty("jdbc.url")); dataSource.setUsername(env.getProperty("jdbc.username")); dataSource.setPassword(env.getProperty("jdbc.password")); Properties connectionProperties = new Properties(); dataSource.setConnectionProperties(connectionProperties); return dataSource; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); } Programação Web Construção do Sistema Spring MVC5 + Hibernate Prof. Manoel Ribeiro Aula 6 – Hibernate JPA private Properties hibernateProperties() { return new Properties() { { setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); setProperty("hibernate.globally_quoted_identifiers", "true"); } }; } @Bean @Autowired public HibernateTransactionManager transactionManager(org.hibernate.SessionFactory sessionFactory) { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(sessionFactory); return txManager; } } 6) Criar camada DAO, camada DAO define e implementa os métodos de acesso as entidades: br.estacio.dao 7) Criar interface UserDao em br.estacio.dao, com métodos básicos: save, delete, findAll public interface UserDao extends Serializable { public User save(User user); public void delete(Long id); public Iterable<User> findAll(); } 8) Criar classe de implementação UserDaoImpl em br.estacio.dao @Repository("UserDao") public class UserDaoImpl implements UserDao { @Autowired private SessionFactory sessionFactory; private Session getSession() { return sessionFactory.getCurrentSession(); Programação Web Construção do Sistema Spring MVC5 + Hibernate Prof. Manoel Ribeiro Aula 6 – Hibernate JPA } @Override public User save(User user) { getSession().saveOrUpdate(user); return getSession().get(User.class, user.getId()); } @Override public void delete(Long id) { User u = getSession().get(User.class, id); getSession().delete(u); } @Override public Iterable<User> findAll() { TypedQuery<User> query = getSession().createQuery("select u from User u") return query.getResultList(); } } 9) Criar camada de serviço em br.estacio.service, a camada de serviço implementa as transações com banco de dados 10) Criar interface de serviço UserService com base em UserDao public interface UserService extends UserDao { } 11) Implementar classe de serviço em UserServiceImpl com base em UserService @Service("userService") @Transactional public class UserServiceImpl implements UserService { /** * */ private static final long serialVersionUID = - 3951326895743325749L; UserDao dao; @Autowired public void setUserdao(UserDao userdao) { this.dao = userdao; } @Override public User save(User user) { return dao.save(user); Programação Web Construção do Sistema Spring MVC5 + Hibernate Prof. Manoel Ribeiro Aula 6 – Hibernate JPA } @Override public void delete(Long id) { dao.delete(id); } @Override public Iterable<User> findAll() { return dao.findAll(); } } 12) Alterar método do controlador para utilizar o serviç public class UserController { @Autowired UserService userService; … userService.save(user);
Compartilhar