Definito il nostro modello User, vogliamo creare alcuni servizi su di esso. In particolare vogliamo dare la possibilità al sistema di creare nuovi utenti, eliminarli, aggiornarli e prelevarli tutti in una lista.
Per fare questo creeremo un’interfaccia UserService.java.
package it.sample.webapp.service;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import it.sample.webapp.model.User;
public interface UserService {
/**
* Creates a new user
* @param user new user to be created
* @return updated user object that should be used for further updates
* @throws javax.persistence.PersistenceException when the user can not be
* persisted. This is a <code>RuntimeException</code>
*/
public User createUser(User user);
/**
* Deletes the specified user
* @param user user object to be deleted
* @throws javax.persistence.PersistenceException when the user can not be
* deleted. This is a <code>RuntimeException</code>
*/
public void deleteUser(User user);
/**
* Updates the specified user
* @param user user object to be updated
* @return updated user object that should be used for further updates
* @throws javax.persistence.PersistenceException when the user can not be
* persisted. This is a <code>RuntimeException</code>
*/
public User updateUser(User user);
/**
* Gets the user using specified user id
* @param id unique id assigned to the user
* @return <code>User</code> object; <code>null</code> if the user does not
* exist in the database
*/
public User getUser(Long id);
/**
* Gets all the users
* @return list of all the users
*/
public List<User> getAllUsers();
/**
* Gets the user using specified user name
* @param name user's name
* @return <code>User</code> object corresponding to the specified name;
* <code>null</code> if the user does not exist in the database
*/
public User getUserByUserName(String username);
}
L’interfaccia sarà poi implementata dalla classe UserServiceImpl.java
package it.sample.webapp.service.impl;
import java.util.List;
import javax.persistence.NoResultException;
import org.apache.log4j.Logger;
import org.springframework.transaction.annotation.Transactional;
import it.sample.webapp.dao.jpa.UserDao;
import it.sample.webapp.model.User;
import it.sample.webapp.service.UserService;
@Transactional
public class UserServiceImpl implements UserService{
Logger logger = Logger.getLogger(this.getClass());
private UserDao userDao;
@Override
public User createUser(User user) {
return userDao.save(user);
}
@Override
public void deleteUser(User user) {
userDao.delete(user.getId());
}
@Override
public List<User> getAllUsers() {
return userDao.getAll();
}
@Override
public User getUser(Long id) {
User user = null;
try {
user = userDao.getById(id);
}
catch (NoResultException nsre) {
if (logger.isDebugEnabled()) {
logger.debug("No user found for the specified ID : [" + id + "]");
}
user = null;
}
return user;
}
@Override
public User updateUser(User user) {
return userDao.save(user);
}
@Override
public User getUserByUserName(String username) {
User user = null;
try {
user = userDao.getByUserName(username);
}
catch (NoResultException nsre) {
if (logger.isDebugEnabled()) {
logger.debug("No user found for the specified Name : [" + username + "]");
}
user = null;
}
return user;
}
/**
* Sets the DAO used by this service for persisting <code>User</code> object
* @param userDao the user DAO to be used for persistence
*/
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/**
* Gets the <code>User</code> DAO used for persistence
* @return the user DAO used for persistence
*/
public UserDao getUserDao() {
return userDao;
}
}
Adesso creiamo una classe SampleAction richiamata da struts in modo da scrivere un minimo di logica di business.