package com.hantsylabs.example.spring.hibernate5;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.hantsylabs.example.spring.dao.ConferenceDao;
import com.hantsylabs.example.spring.model.Conference;
@Repository
public class Hibernate5ConferenceDaoImpl implements ConferenceDao {
private static final Logger log = LoggerFactory
.getLogger(Hibernate5ConferenceDaoImpl.class);
@Autowired
SessionFactory sessionFactory;
private Session session() {
return sessionFactory.getCurrentSession();
}
@Override
public Conference findById(Long id) {
return (Conference) session().load(Conference.class, id);
}
@Override
public Long save(final Conference conference) {
return (Long) session().save(conference);
}
@Override
public void update(final Conference conference) {
session().update(conference);
}
@Override
public void delete(final Long id) {
session().delete(session().get(Conference.class, id));
}
@Override
public void delete(final Conference conf) {
session().refresh(conf);
session().delete(conf);
}
@Override
public void deleteAll() {
List<Conference> all = session().createQuery("from Conference").list();
for (Conference c : all) {
delete(c);
}
}
@Override
public Conference findBySlug(String slug) {
List<Conference> all = session().createQuery("from Conference where slug=:slug").setParameter("slug", slug).list();
if(!all.isEmpty()){
return all.get(0);
}
return null;
}
}