`
lhx1026
  • 浏览: 308254 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

怎么使用EntityManager获得记录数

阅读更多

如下所示:

 

首先是要获得jpa的entityManager:

 

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtil {
	
    private static EntityManagerFactory entityManagerFactory;
    static {
        try {
            entityManagerFactory = 
                Persistence.createEntityManagerFactory("mmsbackup");
        }
        catch(Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }
 
    public static EntityManagerFactory getEntityManagerFactory() {
        return entityManagerFactory;
    }
 
    public static void shutdown() {
        getEntityManagerFactory().close();
    }
}

 

然后编写实体:

 

package net.kentop.mmsbackend.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Transient;

import net.kentop.common.util.BlankUtil;

import org.hibernate.annotations.GenericGenerator;

/**
 * smil文件实体
 * @author lhx1026
 *
 */

@Entity
@Table(name="SMIL_FILES")
public class SmilFile implements Serializable{


	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1025423394267546744L;

	private String mmsid;
	
	private String title;
	
	private byte[] smil;
	
	private Date createDate;
	
	private String startDate;
	
	private String endDate;
	
	private Set<SmilMedia> medias = new HashSet<SmilMedia>();

	@Id
	@Column(length = 32)
	@GenericGenerator(name = "uuid", strategy = "uuid.hex")
	@GeneratedValue(generator = "uuid")
    public String getMmsid() {
		return mmsid;
	}

	public void setMmsid(String mmsid) {
		this.mmsid = mmsid;
	}

	@Column(nullable=false)
	public String getTitle() {
		return title;
	}


	public void setTitle(String title) {
		this.title = title;
	}

	@Lob
	@Column(nullable=false)
	public byte[] getSmil() {
		return smil;
	}

	public void setSmil(byte[] smil) {
		this.smil = smil;
	}

	@Column(nullable=false)
	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	
	
	
	@Transient
	public String getStartDate() {
		return startDate;
	}

	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}

	@Transient
	public String getEndDate() {
		return endDate;
	}

	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}

	@OneToMany(fetch=FetchType.LAZY,mappedBy="smilFile",cascade={CascadeType.ALL})
	public Set<SmilMedia> getMedias() {
		return medias;
	}

	public void setMedias(Set<SmilMedia> medias) {
		this.medias = medias;
	}

	public SmilFile(){
		
	}
	
	public int hashCode() {
		 return mmsid.hashCode();
	}
	
	public boolean equals(Object obj) {
		
		if (BlankUtil.isBlank(obj)) {
			return false;
		}

		if (this == obj) {
			return true;
		}

		if (!(obj instanceof SmilFile)) {
			return false;
		}

		SmilFile smil = (SmilFile) obj;

		if (BlankUtil.isBlank(this.mmsid) || BlankUtil.isBlank(smil.getMmsid())) {
			return false;
		}

		return this.mmsid.equals(smil.getMmsid());
	}
	
	public String toString() {
		
		return "id:"+mmsid+",title"+title;
	}
	
	
}

 

编写dao层中的获得记录数的方法:

 

public static Long getCountsByConditions(SmilFile file){
		
	StringBuilder builder = new StringBuilder().append("select count(*) from SmilFile po where 1=1");
		if(!BlankUtil.isBlank(file)){
			
			if(!BlankUtil.isBlank(file.getTitle())){
				
				builder.append(" and po.title = :title");
			}
			
		}
		
		EntityManager em = JPAUtil.getEntityManagerFactory().createEntityManager();
		
		Query query = em.createQuery(builder.toString());
		
		if(!BlankUtil.isBlank(file.getTitle())){
		query.setParameter("title",file.getTitle());
		}
		
		Long counts = (Long)query.getSingleResult();//就是这个getSingleResult()方法
		
		em.close();
		
		return counts;
	}
 

 

0
1
分享到:
评论

相关推荐

    EntityManager,实体类数据库访问管理层

    //返回更新的记录数,当然,一般成功执行就会返回1;也可以改上面为public void Update(Customs customs) } /// /// 删除操作 /// /// &lt;param name="name"&gt;&lt;/param&gt; public int DeleteByName(string name) { ...

    JBoss5.pdf

    Hibernate EntityManager是Hibernate的一部分,它为开发人员提供了一个标准化的接口来管理Java持久化实体(即数据库表中的记录)。 JBoss EAP 5 Hibernate EntityManager Reference Guide是一份指南文档,用于指导...

    TongWeb6.0应用开发手册.pdf

    - 在EJB Bean中可以通过`@PersistenceContext`或`@PersistenceUnit`注解获得EntityManager。 - **Web容器中获得**: - 在Web应用中同样可以通过注解获得EntityManager。 - **J2SE中获得**: - 在标准Java环境中,...

    How to Use Hibernate JPA

    - 使用`EntityManager`的`merge()`方法更新数据库中的用户记录。 #### 新增一个 Embeddable Class 1. **定义嵌入式类** - 创建一个`Address`类,该类将包含用户的地址信息。 - 使用`@Embeddable`注解标记该类。...

    openjpa 教程

    5. **事务管理**:在JPA中,事务控制是通过`entityManager.getTransaction()`获得,然后开始、提交或回滚事务。事务是数据库操作的基本单位,确保数据的一致性。 6. **查询语言JPA QL**:JPA QL是一种基于Java的...

    JPA CRDU Programming Patterns

    通过模型外观(Model Façade)设计模式,可以更好地管理这些操作,确保实体之间的关系得到正确处理。具体来说,模型外观负责简单实体和主实体的CRUD操作,而主实体则负责管理与其关联的从实体的CRUD操作。这样可以...

    EJB3.0的学习文档

    #### 3.2 配置和获得 EntityManager EntityManager是处理实体的主要接口,通常通过`EntityManagerFactory`创建。在Java EE环境中,可以从`@PersistenceContext`注解的字段中注入EntityManager。 #### 3.3 Entity ...

    Pro JPA 2 Mastering the Java Persistence API free down

     EntityManager 和 Query API 都得到改进。比如说,现在可以从结果集中直接取得第一条记录 (JPA1.0 只允许从一个 unique 结果集中反回单个记录 ) ,指定 query 结果集的最大值,访问各个供应商的底层实体对象 ...

    Spring JPA学习

    该标准由JSR 220定义,并在JSR 317中得到进一步发展和完善。JPA允许开发者使用简单的Java对象来表示持久化到数据库中的数据,这些对象称为实体(entity)。 **1.1.3 元数据** 元数据是指描述实体和数据库表之间映射...

    Hibernate jar包下载

    6. slf4j-api.jar和slf4j-log4j12.jar:日志框架,Hibernate使用SLF4J作为日志接口,与Log4j结合使用记录框架内部的日志信息。 7. commons-collections.jar:Hibernate使用此库进行集合操作优化。 8. classmate....

    Apache OpenJPA User's Guide

    - **获取EntityManagers**:描述了如何从EntityManagerFactory中获得EntityManager实例。 - **持久化上下文**: - **事务持久化上下文**:解释了事务上下文的概念及其作用。 - **扩展持久化上下文**:讨论了持久化...

    SSH和Oracle的jar包

    例如,Spring框架的jar文件可能有`spring-core.jar`、`spring-context.jar`等,Struts可能包含`struts2-core.jar`,Hibernate可能有`hibernate-entitymanager.jar`、`hibernate-core.jar`等。对于Oracle,你可能会...

    EJB 3.0

    1. **配置和获得EntityManager** - 使用**@PersistenceContext**或**@PersistenceUnit**注入EntityManager。 2. **Entity的生命周期和状态** - **临时状态**:新创建但尚未保存到数据库中的实体。 - **托管状态*...

    hibernate API

    Hibernate API 是一个强大的Java持久化框架,用于简化数据库操作。...在优化性能和处理复杂查询时,可能需要结合两者的优势,或者使用更高级的工具如JPA(Java Persistence API)的`EntityManager`。

    hibernate-release-5.0.6.Final

    4. Session和EntityManager的改进:增强了Session和EntityManager的行为,使得在多线程环境下更易于管理。 5. 更好的错误处理:提供了更清晰的错误信息,便于开发者调试和解决问题。 三、关键组件解析 1. ...

    hibernate jar包参考图片

    2. **hibernate-entitymanager.jar**:提供了JPA的支持,允许开发者使用JPA API进行实体管理和事务处理。 3. **hibernate-validator.jar**:提供了Bean Validation的支持,用于实现实体验证逻辑。 4. **antlr-...

    Symfony2使用Doctrine进行数据库查询方法实例总结

    首先,Symfony2项目的实体管理器(EntityManager)是进行数据库查询的关键组件。通过调用`getDoctrine()-&gt;getEntityManager()`可以获得实体管理器的实例,进而与数据库交互。 接下来,我们需要获取特定的Repository...

    selenium(jpa+jdbc)

    5. **编写DAO(Data Access Object)**:设计接口和实现类,使用JPA的EntityManager进行CRUD操作,或者直接使用JDBC进行低级别操作。 6. **Selenium测试准备**:设置WebDriver,根据需要选择ChromeDriver、Gecko...

    struts2 + hibernate 框架

    Struts2的核心库包括`struts2-core`,而Hibernate的依赖可能包括`hibernate-core`、`hibernate-entitymanager`以及JDBC驱动等。确保版本号与当前稳定版保持一致,以获得最佳兼容性和性能。 接着,配置项目的目录...

Global site tag (gtag.js) - Google Analytics