package br.com.livro.domain; import java.util.List; import org.hibernate.Query; import org.springframework.stereotype.Component; @Component @SuppressWarnings("unchecked") public class CarroDAO extends HibernateDAO<Carro> { public CarroDAO() { // Informa o tipo da entidade para o Hibernate super(Carro.class); } // Consulta um carro pelo id public Carro getCarroById(Long id) { // O Hibernate consulta automaticamente pelo id return super.get(id); } // Busca um carro pelo nome public List<Carro> findByName(String nome) { Query q = getSession().createQuery("from Carro where lower(nome) like lower(?)"); q.setString(0, "%" + nome +"%"); return q.list(); } // Busca um carro pelo tipo public List<Carro> findByTipo(String tipo) { Query q = getSession().createQuery("from Carro where tipo=?"); q.setString(0, tipo); List<Carro> carros = q.list(); return carros; } // Consulta todos os carros public List<Carro> getCarros() { Query q = getSession().createQuery("from Carro"); List<Carro> carros = q.list(); return carros; } // Insere ou atualiza um carro public void salvar(Carro c) { super.save(c); } // Deleta o carro pelo id public boolean delete(Long id) { Carro c = get(id); delete(c); return true; } }