Buscar

aula 6

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);

Continue navegando