`
wsc830719
  • 浏览: 166073 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

这样封装JPA的EntityManager如何

阅读更多
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Administrator
 */
public class EntityManagerUtil {

    private static final EntityManagerFactory emf;
    private static final ThreadLocal<EntityManager> threadLocal;

    static {
        emf = Persistence.createEntityManagerFactory("chykj1.4PU");
        threadLocal = new ThreadLocal<EntityManager>();
    }

    public static EntityManager getEntityManager() {
        EntityManager em = threadLocal.get();
        if (em == null || !em.isOpen()) {
            em = emf.createEntityManager();
            threadLocal.set(em);
        }
        System.out.println(em);
        return em;
    }

    public static void closeEntityManager() {
        EntityManager em = threadLocal.get();
        threadLocal.set(null);
        if (em != null) {
            em.close();
        }
    }

    public static void closeFactory() {
        if (emf != null && emf.isOpen()) {
            System.out.println("emf closed!");
            emf.close();
        }
    }

    public static void begin() {
        getEntityManager().getTransaction().begin();
    }

    public static void commit() {
        getEntityManager().getTransaction().commit();
    }

    public static void rollback() {
        getEntityManager().getTransaction().rollback();
    }

    public static <T> T find(Class<T> c, Object key) {
        return getEntityManager().find(c, key);
    }

    public static void persist(Object entity) {
        getEntityManager().persist(entity);
    }

    public static <T> T merge(T entity) {
        return getEntityManager().merge(entity);
    }

    public static void remove(Object entity) {
        getEntityManager().remove(entity);
    }

    public static void flush() {
        getEntityManager().flush();
    }
}

 08年底接触下了jsf,看了点ICEFaces,一个jpa的例子里有对EntityManager的封装,自己改了改用在一个办公室OA里了,发表出来,不知道这样做好不好,如果不发出来,也不知道好不好呢!发出来大家可以讨论下。另外我还上传了我写的OA的全部代码,感兴趣的朋友可以点评下。

 

分享到:
评论

相关推荐

    JPA(hibernate) Dao 和 DaoSupport

    综上所述,`JPA(hibernate) Dao 和 DaoSupport`涉及到Java持久化技术,主要关注如何通过面向对象的方式操作数据库,以及如何设计和使用DAO层来封装数据访问逻辑。在实际项目中,我们还需要了解如何使用Spring Data ...

    封装通用的Spring3+Struts2+JPA的CRUD 通用分页实现

    "封装通用的Spring3+Struts2+JPA的CRUD 通用分页实现"是一个典型的Java Web开发实践,它结合了Spring框架的依赖注入、Struts2的MVC模式以及JPA(Java Persistence API)的数据持久层处理,来实现数据的创建、读取、...

    JPA基础语法资料--JPA_Basic

    JPA通过`EntityManager`和`EntityManagerFactory`来管理实体。`EntityManager`是操作数据库的主要接口,包含持久化实体、查询数据等功能。例如,保存一个用户: ```java EntityManagerFactory emf = Persistence....

    JPA Demo 简单的了解下jpa

    4. **数据访问对象(DAO)**: 使用JPA的实体管理器实现对数据库的操作,封装业务逻辑,提供CRUD(Create, Read, Update, Delete)接口。 **JPA操作示例** 在JPA中,操作数据库的基本步骤如下: 1. **创建实体**: ...

    JPA学习大全.docx

    例如,要保存一个客户到数据库,可以创建一个`Customer`实体类,使用`@Entity`注解标识,然后通过JPA的`EntityManager`接口进行操作,如`persist()`方法用于保存新对象到数据库。 总的来说,Spring Data JPA结合JPA...

    JPA环境搭建及CRUD

    在实际开发中,你可能会使用Repository接口或者Service层来封装这些操作,以便更好地实现业务逻辑。同时,JPA还支持更高级的查询语言——JPQL(Java Persistence Query Language),它可以让你以面向对象的方式编写...

    OpenJPA 2.2.1 API (CHM格式)

    OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。OpenJPA 可以作为独立的持久层框架发挥作用,也可以轻松的与其它 Java EE 应用框架或者符合 EJB 3.0 标准的容器集成。  除了对 ...

    struts2 jpa project

    DAO层则直接与JPA交互,利用EntityManager进行CRUD(创建、读取、更新、删除)操作。 项目中可能会有单元测试(unit tests)来验证Struts2动作和JPA操作的正确性。使用JUnit或TestNG编写测试,可以确保代码的质量和...

    JPA基础

    JPA允许我们将数据库操作封装到Java对象中,使得我们可以使用面向对象的方式来处理数据,而无需直接编写SQL语句。 1. **对象/关系映射(ORM)** JPA的核心功能是ORM,它将Java类映射到数据库表,Java对象的属性...

    Spring-JPA

    JPA本身是Java平台上的一个标准,用于管理关系数据库中的数据,而Spring-JPA则是Spring对这个标准的封装和扩展,旨在简化数据访问层的开发。 **一、Spring-JPA的核心概念** 1. **Repository接口**: Spring-JPA通过...

    基于SpringBoot+JPA的信息管理系统

    JPA通过提供EntityManager接口和Entity类的注解,简化了数据库操作。 【SpringBoot集成JPA】 在SpringBoot项目中,集成JPA非常简单。只需要在pom.xml或build.gradle文件中添加相应的依赖,SpringBoot会自动配置JPA...

    jpa对表的crud操作

    在JPA中,对表的CRUD操作主要通过`EntityManager`接口来实现,下面我们将详细介绍这些操作。 1. 创建(Create) 在JPA中,创建新记录通常使用`EntityManager`的`persist()`方法。例如,创建一个新的`Person`对象并...

    jpa测试用例(很详细的介绍)

    - EntityManager是JPA的主要接口,负责管理实体对象的生命周期,包括创建、查找、更新和删除。 - Query接口提供了对SQL查询的抽象,支持JPQL(Java Persistence Query Language)和 Criteria API。 2. **单元测试...

    JPA复杂查询加分页查询的快速开发

    最后,我们将查询结果封装到 MyPage 对象中,用于返回给客户端。 结论 使用 JPA 复杂查询加分页查询,可以快速开发高效的数据访问应用程序。通过对 JPA 的了解和使用,可以提高开发效率,提高应用程序的性能和可...

    spring整合jpa简单实例

    而JPA则是一种规范,定义了ORM的标准接口,Hibernate作为其最常见的实现之一,提供了对数据库操作的封装。 **1. 添加依赖** 在Spring整合JPA的过程中,首先需要在项目中添加相关的依赖。如果使用Maven,我们需要在...

    jpa tutorial

    2. 实体管理器(EntityManager):这是JPA的一个重要接口,负责实体的生命周期管理,包括创建、读取、更新和删除操作。 3. 持久化上下文(Persistence Context):这是一个作用域,实体管理器用来跟踪实体的状态,...

    spring-data-commons-1.7.2.RELEASEspring-data-jpa-1.5.2.RELEASE-java datajpa

    2. **EntityManager 和 Repository**:Spring Data JPA 封装了 `EntityManager` 和 `EntityTransaction`,使得开发者可以通过 Repository 接口直接操作,无需直接接触 JPA API。 3. **JPA 查询**:除了 Spring Data...

    Spring和openJPA集成

    1. **依赖注入**:Spring通过其强大的依赖注入机制,可以在运行时动态地配置OpenJPA的相关组件,如EntityManagerFactory、EntityManager等,无需硬编码,增强了代码的可测试性和可维护性。 2. **事务管理**:Spring...

    Hibernate core+annotations+entitymanager 指南小集合

    Hibernate EntityManager是JPA规范的实现,它扩展了Hibernate Core的功能,提供了一种标准的方式来管理和操作持久化实体。EntityManager接口是核心的入口点,它负责实体的生命周期管理,如持久化、查找、更新和删除...

    springmvc3-hibernate4-jpa2

    JPA的主要组件包括Entity(持久化类)、EntityManager(管理实体的对象)、EntityManagerFactory(创建EntityManager的工厂)等。 在项目"springmvc3-hibernate4-jpa2"中,Spring MVC、Hibernate和JPA的整合通常...

Global site tag (gtag.js) - Google Analytics