`
vtrtbb
  • 浏览: 360635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring+jpa+hibernate代码

    博客分类:
  • java
阅读更多
import java.io.Serializable;
import java.util.List;

import javax.persistence.Query;

public interface IBaseDAO<T> {

public T find(Class<T> clazz, Serializable id);

public void persist(T t);

public void save(T t);

public void delete(T t);

public Query createQuery(String jpql);

public int getTotalCount(String jpql);

public List<T> find(String jpql);

public List<T> find(String jpql, Object param);

public List<T> find(String jpql, Object... param);

public void saveOrUpdate(T t);
}

 

public class BaseDAOImpl<T extends BaseBean> implements IBaseDAO<T> {

@PersistenceContext
protected EntityManager em;

public Query createQuery(String jpql) {
   return em.createQuery(jpql);
}

public void delete(T t) {
   em.remove(t);
}

public T find(Class<T> clazz, Serializable id) {
   return em.getReference(clazz, id);
}

@SuppressWarnings("unchecked")
public List<T> find(String jpql, Object param) {
   return em.createQuery(jpql).setParameter(1, param).getResultList();
}

@SuppressWarnings("unchecked")
public List<T> find(String jpql, Object[] param) {
   Query query = em.createQuery(jpql);
   for (int i = 1; i <= param.length; i++) {
    query.setParameter(i, param[i - 1]);
   }
   return query.getResultList();
}

@SuppressWarnings("unchecked")
public List<T> find(String jpql) {
   return em.createQuery(jpql).getResultList();
}

@SuppressWarnings("unchecked")
public int getTotalCount(String jpql) {
   return ((Long) em.createQuery(jpql).getSingleResult()).intValue();
}

public void persist(T t) {
   em.persist(t);
}

public void save(T t) {
   em.merge(t);
}

public void saveOrUpdate(T t) {
   em.merge(t);
}

public EntityManager getEntityManager() {
   return em;
}

@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
   this.em = entityManager;
}

 

 

import java.io.Serializable;
import java.util.List;

import com.fengmanfei.blog.exception.BusinessException;

public interface IBaseService<T> {

public void create(T t) throws BusinessException;

public void save(T t) throws BusinessException;

public void delete(T t) throws BusinessException;

public T find(Class<T> clazz, Serializable id);

public int getTotalCount(String jpql);

public List<T> find(String jpql);

public List<T> find(String jpql, Object param);

public List<T> find(String jpql, Object... param);

}

 

 

@Transactional
public class BaseServiceImpl<T extends BaseBean> implements IBaseService<T> {

protected Log log = LogFactory.getLog(this.getClass());

protected IBaseDAO<T> baseDAO;

public void create(T t) throws BusinessException {
   baseDAO.persist(t);
}

public void delete(T t) throws BusinessException {
   t.setDeleted(true);
   baseDAO.save(t);
}

public void save(T t) throws BusinessException {
   baseDAO.save(t);
}

public T find(Class<T> clazz, Serializable id) {
   T t = baseDAO.find(clazz, id);
   if (t.isDeleted()) {
    return null;
   }
   return t;
}

public List<T> find(String jpql, Object param) {
   return baseDAO.find(jpql, param);
}

public List<T> find(String jpql, Object... param) {
   return baseDAO.find(jpql, param);
}

public List<T> find(String jpql) {
   return baseDAO.find(jpql);
}

public int getTotalCount(String jpql) {
   return (Integer) baseDAO.createQuery(jpql).getSingleResult();
}

public IBaseDAO<T> getBaseDAO() {
   return baseDAO;
}

public void setBaseDAO(IBaseDAO<T> baseDAO) {
   this.baseDAO = baseDAO;
}

}

 

 

再来看具体的功能,比如person的部分,
首先是person的接口:

import com.fengmanfei.blog.entity.Person;

public interface IPersonService<T extends Person> extends IBaseService<T> {

public T findPersonByAccount(String login);

public T findPersonByAccountAndPassword(String login, String password);
}

 

 

person的实现:

public class PersonServiceImpl<T extends Person> extends BaseServiceImpl<T>
   implements IPersonService<T> {

public void create(T person) throws BusinessException {

   log.info("");

   if (findPersonByAccount(person.getAccount()) != null) {
    throw new BusinessException("帐号 \"" + person.getAccount()
      + "\" 已经存在. ");
   }

   this.baseDAO.persist(person);
}

@SuppressWarnings("unchecked")
public T findPersonByAccount(String account) {

   log.info("");

   List<T> personList = this.baseDAO.find(" SELECT p FROM Person p "
     + " WHERE p.account = lower(?) AND p.deleted = false ", account
     .toLowerCase().trim());

   if (personList.size() > 0) {
    return personList.get(0);
   }

   return null;
}

@SuppressWarnings("unchecked")
public T findPersonByAccountAndPassword(String login, String password) {

   log.info("");

   List<T> personList = this.baseDAO.find(" SELECT p FROM Person p "
     + " WHERE p.account = lower(?) "
     + " AND p.password = ? and p.deleted = false ", new String[] {
     login.toLowerCase().trim(), password });

   if (personList.size() > 0) {
    return personList.get(0);
   }

   return null;
} 

 

分享到:
评论

相关推荐

    spring+springMVC+jpa+hibernate框架整合

    在IT领域,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+jpa+hibernate框架整合"就是一个常见的解决方案。这个整合涉及到四个关键的技术栈:Spring框架、SpringMVC、JPA(Java Persistence API)...

    Spring+Jersey+JPA+Hibernate+MySQL整合

    在本项目中,Spring被用来整合其他技术,如Jersey、JPA和Hibernate,以实现一个完整的Web服务解决方案。 Jersey是Java RESTful Web Services(RESTful API)的实现,它基于JSR 311和JSR 339标准。通过使用Jersey,...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    JSF+Spring+JPA(Hibernate实现)的环境搭建

    ### JSF+Spring+JPA(Hibernate实现)的环境搭建 #### 一、概述 根据提供的文件信息,本文旨在深入探讨如何构建一个基于JSF、Spring 和 JPA(使用 Hibernate 实现)的技术栈。该技术栈被视为Struts2+Spring+...

    SpringMVC+Spring+SpringDataJPA+Hibernate整合登录的效果

    这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...

    Struts+Spring+Jpa(hibernate)整合

    "Struts+Spring+Jpa(hibernate)整合"这个主题意味着我们要将这三个框架进行集成,以实现更强大的功能。在实际项目中,这种整合能够帮助开发者更好地管理业务逻辑、持久化数据以及处理用户请求。 1. **Struts**:...

    Spring + JPA + Hibernate配置

    标题“Spring + JPA + Hibernate配置”涉及到的是Java开发中常用的三个框架——Spring、Java Persistence API (JPA) 和Hibernate的集成与配置。这是一份关于如何将这些框架结合使用的教程或参考资料,可能包含了实现...

    JSF+Spring+JPA_Hibernate实现_的环境搭建

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而JSF(JavaServer Faces)、Spring框架和JPA(Java Persistence API)结合Hibernate的整合使用,为开发人员提供了强大的工具集。这篇文档"JSF+Spring+JPA_...

    jsf+spring2.5+jpa(hibernate)的jar包

    这是jsf+spring2.5+jpa(hibernate)的jar包,很多人为了jsj环境而配置半天,在此提供jar包共享。注:除了ajax4jsf和tomahawk-1.1.3.jar,因为csdn只让我上传20mb,大家自己可以下一下自己试试。

    Springmvc+JPA(Hibernate4)+redis+activemq

    **Spring MVC + JPA(Hibernate4) + Redis + ActiveMQ:构建高效、全面的Web应用** Spring MVC 是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了一个灵活的请求处理机制,...

    Spring+SpringMVC+SpringData+JPA+hibernate+shiro

    在这个"Spring+SpringMVC+SpringData+JPA+Hibernate+Shiro"的组合中,我们涉及到了Spring生态系统的多个核心组件,以及两个重要的持久层技术和一个安全框架。下面将逐一详细介绍这些技术及其整合方式。 1. **Spring...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    此外,教程可能还会涵盖事务管理的配置,以及如何使用Spring Data JPA进一步简化数据访问层的代码。 整合这三大框架,可以实现高效、灵活且易于维护的Java Web应用。通过注解,开发者可以减少XML配置,提高代码的...

    Spring+JPA(hibernate)整合 一对多及继承关系配置

    NULL 博文链接:https://prowl.iteye.com/blog/519618

    spring4.2+spring mvc +spring data+jpa+hibernate的程序构架

    在本项目中,我们看到的是一个基于 Spring 4.2 版本的综合构架,结合了 Spring MVC、Spring Data 和 JPA,以及 Hibernate 的使用。这些技术的整合为构建高效、可维护的 web 应用提供了强大的支持。 1. **Spring 4.2...

    SpringMvc+Spring+JPA+Hibernate实现的增删改查.zip

    在本项目中,"SpringMvc+Spring+JPA+Hibernate实现的增删改查.zip" 是一个使用Java技术栈开发的Web应用实例,主要涵盖了Spring MVC、Spring框架、JPA(Java Persistence API)以及Hibernate这四个核心组件。...

    spring3+springmvc+jpa+hibernate多数据源

    "spring3+springmvc+jpa+hibernate多数据源"是一个示例项目,它演示了如何在一个应用中集成Spring 3、Spring MVC、JPA 2.0以及Hibernate,以实现对多个数据源的支持。下面将详细介绍这些技术及其集成的关键点。 **...

    spring+springmvc+jpa(hibernate)框架整合

    在Spring中整合JPA或Hibernate,可以实现对数据库的便捷操作,无需编写大量的SQL代码。 整合Spring、SpringMVC和Hibernate,首先需要在项目中引入相关依赖,通常通过Maven或Gradle来管理。在pom.xml或build.gradle...

Global site tag (gtag.js) - Google Analytics