Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Java Spring with Hibernate Getting Started with CRUD in Spring + Hibernate Add Saving to DAO & Service

Implement the save method in ContactServiceImpl by calling the DAO's respective method

Cannot seem to figure out what is wrong with my code in Task 3. Please help. I get a message saying "save method doesn't call DAO's save method"

com/teamtreehouse/contactmgr/dao/ContactDao.java
package com.teamtreehouse.contactmgr.dao;

import com.teamtreehouse.contactmgr.model.Contact;

import java.util.List;

public interface ContactDao {
    List<Contact> findAll();
    Contact findById(Long id);
     @Override
    public void save(Contact contact) {
        contactDao.saveOrUpdate(contact);
    }
}
com/teamtreehouse/contactmgr/dao/ContactDaoImpl.java
package com.teamtreehouse.contactmgr.dao;

import com.teamtreehouse.contactmgr.model.Contact;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class ContactDaoImpl implements ContactDao {
    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public List<Contact> findAll() {
        Session session = sessionFactory.openSession();
        List<Contact> contacts = session.createCriteria(Contact.class).list();
        session.close();
        return contacts;
    }
  @Override
    public void save(Contact contact) {
      Session session = sessionFactory.openSession ();
      session.beginTransaction(); 
      session.save(catergory);
      session.getTransaction().commit();
      session.close();
    }

    @Override
    public Contact findById(Long id) {
        Session session = sessionFactory.openSession();
        Contact c = session.get(Contact.class, id);
        session.close();
        return c;
    }
}
com/teamtreehouse/contactmgr/service/ContactService.java
package com.teamtreehouse.contactmgr.service;

import com.teamtreehouse.contactmgr.model.Contact;

import java.util.List;

public interface ContactService {
    List<Contact> findAll();
    Contact findById(Long id);

     @Override
    public void save(Contact contact) {
        contactDao.saveOrUpdate(contact);
    }
}
com/teamtreehouse/contactmgr/service/ContactServiceImpl.java
package com.teamtreehouse.contactmgr.service;

import com.teamtreehouse.contactmgr.dao.ContactDao;
import com.teamtreehouse.contactmgr.model.Contact;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ContactServiceImpl implements ContactService {
    @Autowired
    private ContactDao contactDao;

    @Override
    public List<Contact> findAll() {
        return contactDao.findAll();
    }
    @override
    public void save(Catergory catergory) {
    }

    @Override
    public Contact findById(Long id) {
        return contactDao.findById(id);
    }
}

2 Answers

In your ContactDaoImpl.java check the object that you are reading into your session.save method. You are confusing the object in the video from the object needed in the lesson.

package com.teamtreehouse.contactmgr.service;

import com.teamtreehouse.contactmgr.dao.ContactDao; import com.teamtreehouse.contactmgr.model.Contact; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

import java.util.List;

@Service public class ContactServiceImpl implements ContactService { @Autowired private ContactDao contactDao;

@Override
public List<Contact> findAll() {
    return contactDao.findAll();
}

@Override
public Contact findById(Long id) {
    return contactDao.findById(id);
}
 @Override
public void save(Contact contact) {
    contactDao.save(contact);
}

}