自分で書いた汎用簡略化コードの例
Base Serviceクラス:
実装クラス:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.jboss.seam.annotations.In;
public class BaseService implements Serializable {
private static final long serialVersionUID = 232790306929537427L;
@In
EntityManager em;
protected EntityManager getEntityManager() {
return em;
}
protected <T> void persist(T t) {
getEntityManager().persist(t);
}
protected <T> void update(T t) {
getEntityManager().merge(t);
}
protected <T> void remove(T t) {
getEntityManager().remove(t);
}
@SuppressWarnings("unchecked")
protected <T> T getEntityById(String namedQuery, String queryKey, int keyId) {
T t;
Query q = getEntityManager().createNamedQuery(namedQuery);
q.setParameter(queryKey, keyId);
t = (T) q.getSingleResult();
return t;
}
@SuppressWarnings("unchecked")
protected <T> List<T> findResults(String querysql){
List<T> tl = new ArrayList<T>();
tl = (List<T>)getEntityManager().createQuery(querysql).getResultList();
return tl;
}
}
実装クラス:
import java.util.ArrayList;
import java.util.List;
import org.jboss.seam.annotations.Name;
import com.apj.epm.model.Customer;
import com.apj.epm.model.Project;
import com.apj.epm.vo.ProjectVO;
@Name("projectService")
public class ProjectService extends BaseService {
private static final long serialVersionUID = -4134390648777536330L;
public List<ProjectVO> findAllProjects(String customerId,
String projectName, String abbrProjectName) {
List<ProjectVO> pl = new ArrayList<ProjectVO>();
String querysql = "";
if (projectName != null) {
if (projectName.length() > 0)
querysql += "AND PROJECT_NAME like '" + projectName + "' ";
}
if (abbrProjectName != null) {
if (abbrProjectName.length() > 0)
querysql += "AND ABBR_PROJECT_NAME like '" + abbrProjectName
+ "' ";
}
querysql = "select p from Project p where (CUSTOMER_ID = " + customerId + " or 0=" + customerId + ") "
+ querysql;
List<Project> pml = this.findResults(querysql);
for (Project p : pml) {
pl.add(new ProjectVO(p));
}
return pl;
}
public void Save(ProjectVO p) {
Project newProject;
Customer c;
c = this.getEntityById("Customer.findCustomerById", "customerId", p
.getCustomer().getCustomerId());
newProject = new Project(p.getPiNo(), p.getProjectName(), p
.getAbbrProjectName(), c, p.getProjectType(), p
.getProjectStatus(), p.getProjectNature(),
p.getSystemManager(), p.getGroupBy());
this.persist(newProject);
}
public void UpdateProject(ProjectVO p) {
Project newProject;
newProject =this.getEntityById("Project.findProjectById", "projectId", p.getProjectId());
Customer c;
c = this.getEntityById("Customer.findCustomerById", "customerId", p
.getCustomer().getCustomerId());
newProject.setAbbrProjectName(p.getAbbrProjectName());
newProject.setCustomer(c);
newProject.setGroupBy(p.getGroupBy());
newProject.setPiNo(p.getPiNo());
newProject.setProjectName(p.getProjectName());
newProject.setProjectNature(p.getProjectNature());
newProject.setProjectStatus(p.getProjectStatus());
newProject.setProjectType(p.getProjectType());
newProject.setSystemManager(p.getSystemManager());
this.update(newProject);
}
public void RemoveProject(ProjectVO p) {
Project newProject;
newProject =this.getEntityById("Project.findProjectById", "projectId", p.getProjectId());
this.remove(newProject);
}
}