`
suhuanzheng7784877
  • 浏览: 692561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47287
社区版块
存档分类
最新评论

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

阅读更多

之后写DAO,无论你是用IDE生成的DAO还是自己写的DAO,代码大致如下:

 

@Transactional

public class PlayerDAO extends JpaDaoSupport implements IPlayerDAO {

    // property constants

    public static final String NAME = "name";

    public static final String MESS = "mess";

    public static final String PIC = "pic";

 

    public void save(PlayersVO entity) {

       logger.info("saving Player instance");

       try {

           getJpaTemplate().persist(entity);

           logger.info("save successful");

       } catch (RuntimeException re) {

           logger.error("save failed", re);

           throw re;

       }

    }

 

    public void delete(PlayersVO entity) {

 

       logger.info("deleting Player instance");

       try {

           entity = getJpaTemplate().getReference(PlayersVO.class,

                  entity.getId());

           getJpaTemplate().remove(entity);

           logger.info("delete successful");

       } catch (RuntimeException re) {

           logger.error("delete failed", re);

           throw re;

       }

    }

    public PlayersVO update(PlayersVO entity) {

       logger.info("updating Player instance");

       try {

           PlayersVO result = getJpaTemplate().merge(entity);

           logger.info("update successful");

           return result;

       } catch (RuntimeException re) {

           logger.error("update failed", re);

           throw re;

       }

    }

 

    public PlayersVO findById(Integer id) {

       logger.info("finding Player instance with id: " + id);

       try {

           PlayersVO instance = getJpaTemplate().find(PlayersVO.class, id);

           return instance;

       } catch (RuntimeException re) {

           logger.error("find failed", re);

           throw re;

       }

    }

 

    @SuppressWarnings("unchecked")

    public List<PlayersVO> findByProperty(String propertyName,

           final Object value, final int... rowStartIdxAndCount) {

       logger.info("finding Player instance with property: " + propertyName

              + ", value: " + value);

       try {

           final String queryString = "select model from PlayersVO model where model."

                  + propertyName + "= :propertyValue";

           return getJpaTemplate().executeFind(new JpaCallback() {

              public Object doInJpa(EntityManager em)

                     throws PersistenceException {

                  Query query = em.createQuery(queryString);

                  query.setParameter("propertyValue", value);

                  if (rowStartIdxAndCount != null

                         && rowStartIdxAndCount.length > 0) {

 

                     // 有分页

                     int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);

 

                     // 开始页

                     if (rowStartIdx > 0) {

                         query.setFirstResult(rowStartIdx);

                     }

 

                     // 一页最大记录数目

                     if (rowStartIdxAndCount.length > 1) {

                         int rowCount = Math.max(0, rowStartIdxAndCount[1]);

                         if (rowCount > 0) {

                            query.setMaxResults(rowCount);

                         }

                     }

                  }

                  return query.getResultList();

              }

           });

       } catch (RuntimeException re) {

           logger.error("find by property name failed", re);

           throw re;

       }

    }

 

    public List<PlayersVO> findByName(Object name, int... rowStartIdxAndCount) {

       return findByProperty(NAME, name, rowStartIdxAndCount);

    }

 

    public List<PlayersVO> findByMess(Object mess, int... rowStartIdxAndCount) {

       return findByProperty(MESS, mess, rowStartIdxAndCount);

    }

 

    public List<PlayersVO> findByPic(Object pic, int... rowStartIdxAndCount) {

       return findByProperty(PIC, pic, rowStartIdxAndCount);

    }

 

    public List<PlayersVO> findAll(final int... rowStartIdxAndCount) {

       logger.info("finding all Player instances");

       try {

           final String queryString = "select model from PlayersVO model";

           return getJpaTemplate().executeFind(new JpaCallback() {

              public Object doInJpa(EntityManager em)

                     throws PersistenceException {

                  Query query = em.createQuery(queryString);

                  if (rowStartIdxAndCount != null

                         && rowStartIdxAndCount.length > 0) {

                     int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);

                     if (rowStartIdx > 0) {

                         query.setFirstResult(rowStartIdx);

                      }

 

                     if (rowStartIdxAndCount.length > 1) {

                         int rowCount = Math.max(0, rowStartIdxAndCount[1]);

                         if (rowCount > 0) {

                            query.setMaxResults(rowCount);

                         }

                     }

                  }

                  return query.getResultList();

              }

           });

       } catch (RuntimeException re) {

           logger.error("find all failed", re);

           throw re;

       }

    }

 

         

    public static IPlayerDAO getFromApplicationContext(ApplicationContext ctx) {

       return (IPlayerDAO) ctx.getBean("PlayerDAO");

    }

}

注意:之所以加入注解:@Transactional,是为了AOP进行事务处理。

分享到:
评论

相关推荐

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

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

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

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

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

    JSF+Spring+JPA以我个人看来,应该说是Struts2+Spring+Hibernate的替代解决方案。 引入JPA去取代或者说包装或者说是升级Hibernate是为了符合JAVA EE的规范,达到ORM统一的结果。下次项目用EJB也好、用TOPLINK也好、...

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

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

    图解BEA Workshop Studio 3.3开发JSF+Spring+JPA(Hibernate)Web应用

    BEA Workshop Studio 3.3是eclipse下最优秀、最有生产力的j2ee web开发ide,该文以大量的屏幕截图示例了借助工具的快速开发过程,欢迎下载,传播。

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    10.2.2 在Java SE环境下使用 Hibernate JPA实现 370 10.2.3 在Java SE环境下使用 TopLink JPA实现 374 10.2.4 在Java SE环境下使用 EntityManager 377 10.2.5 使用orm.xml管理O/R映射 379 10.3 理解实体 382 10.3.1 ...

    SSH框架和JPA+EJB+JSF框架的比较

    各种主流JAVA框架的比较,包括JSF,Struts,EJB,Hibernate,jpa,spring

    Struts+Hibernate+Spring

    JSP+JavaBean和Servlet+JSP+JavaBean框架 Struts框架 Hibernate框架 JPA框架 Spring框架 JSF框架

    JAVA WEB典型模块与项目实战大全.zip

    以Java EE主流框架整合应用及项目开发为主线,通过Java Web开发中最常见的19个典型模块和5个完整的项目案例,详细介绍了Struts 2.x、Spring、Guice、Hibernate、iBATIS、JPA、JSF和AJAX等热门开源技术及JSP +Java ...

    operamasks extjs jsf hibernate jpa spring 组合开发的一个crud

    分数有点高,但是绝对值的.和我之前上传的easyjweb两个框架有相同的地方,我希望我们共同努力把这两个框架结合起来,一起做开发。里面只是一个crud,项目是可以自动生成多表结合的,需要的可以把这个CRUD的例子下下来看...

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用

    JAVA WEB典型模块与项目实战大全

    以Java EE主流框架整合应用及项目开发为主线,通过Java Web开发中最常见的19个典型模块和5个完整的项目案例,详细介绍了Struts 2.x、Spring、Guice、Hibernate、iBATIS、JPA、JSF和AJAX等热门开源技术及JSP +Java ...

    Java.Web典型模块与项目实战大全

    以Java EE主流框架整合应用及项目开发为主线,通过Java Web开发中最常见的19个典型模块和5个完整的项目案例,详细介绍了Struts 2.x、Spring、Guice、Hibernate、iBATIS、JPA、JSF和AJAX等热门开源技术及JSP +Java ...

    java拦截器

    Sun标准:J2EE技术,Servlet、JSP、JPA、JTA、JavaMail、EJB、JSF、JDBC和JPA。。。。。。。 struts+spring+hibernate webwork+spring+hibernate struts+spring+ibatis struts+spring+jdbc webWork+spring+

    SpringMVCHibernateProject:Spring MVC + Hibernate 初学者教程

    SpringMVCHibernate项目Spring MVC + Hibernate 初学者教程技术SpringMVC HibernateJSP 页面应用服务器:Glassfish 数据库:MySQL 内容:共4... 比较 (Spring MVC + Hibernate + JSP) 和 (JavaEE with EJB + JPA + JSF)

    repositorio_uno:集成项目 JSF 2.2、JPA、Hibernate

    PROYECTO 集成 JSF、Primefaces、JPA、Hibernate 和 Spring(安全)环境; 这个项目中的 Las usadas 工具儿子 las siguientes: JSF 2.2 Primefaces 5.1 日本特许经营协会4.3 HibernateSpring安全 3.2.2 Oracle数据库...

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3 【第九章】 Spring的...

    MyEclipse6 Java开发中文教程_全部18章

    第一章 安装配置开发环境 第二章 开发第一个Java 应用程序 第三章 Eclipse 的基础概念,配置和使用 第四章 用MyEclipse Database Explorer管理数据库 第五章 开发JDBC 应用 第六章 管理应用服务器 第七章 开发...

    跟我学spring3(8-13).pdf

    对ORM的支持 之 8.1 概述 8.2 集成Hibernate3 8.3 集成iBATIS 8.4 集成JPA 9.1 数据库事务概述 9.2 事务管理器 9.3 编程式事务 9.4 声明式事务 10.1 概述 10.2 集成Struts1.x 10.3 集成Struts2.x 10.4 集成JSF 11.1 ...

Global site tag (gtag.js) - Google Analytics