There are two forms to get an entity with the methods load() or get().
public Category getCategory(Long catId) throws DataAccessException {
return (Category) this.getSessionFactory().getCurrentSession()
.load(Category.class, catId); }
public Category getCategory(Long catId) throws DataAccessException { return (Category) this.getSessionFactory().getCurrentSession().get(Category.class, catId); }The difference are:
- load()
- Throws an exception if there isn't any row.
- Has performane benefits.
- get()
- Return null if there isn't any row.
HibernateTemplate - Using Parameters with findByNamedParamIn case of use only one parameter, you need the query, parameter name and the value.public List<ArtEntity> getArtworkInCategory(Long catId) throws DataAccessException { return this.getHibernateTemplate().findByNamedParam( "select art from Category cat " + "join cat.artEntities art " + "where cat.id = :catId ", "catId", catId ); }
In case of many parameters, you need the query, array with the parameters and the array with corresponding valuespublic Person authenticatePerson(String username, String password) throws DataAccessException, AuthenticationException { List<Person> validUsers = this.getHibernateTemplate().findByNamedParam( "select people from Person people where" + "people.username = :username " + "and people.password = :password", new String[] {"username", "password"}, new String[] {username, password } ); if (validUsers == null || validUsers.size() <= 0) { throw new AuthenticationException("No users found"); } else { return validUsers.get(0); } }
Hibernate Core APIs - Using Parameters
public Person authenticatePerson(String username, String password) throws DataAccessException, AuthenticationException { Person validUser = (Person) this.getSessionFactory().getCurrentSession().createQuery( "select people from Person people where" + "people.username = :username " + "and people.password = :password") .setString("username", username) .setString("password", password) .uniqueResult() ); if (validUser == null) { throw new AuthenticationException("No users found");
} else { return validUser; } }