如下所示:
首先是要获得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;
}
分享到:
相关推荐
//返回更新的记录数,当然,一般成功执行就会返回1;也可以改上面为public void Update(Customs customs) } /// /// 删除操作 /// /// <param name="name"></param> public int DeleteByName(string name) { ...
Hibernate EntityManager是Hibernate的一部分,它为开发人员提供了一个标准化的接口来管理Java持久化实体(即数据库表中的记录)。 JBoss EAP 5 Hibernate EntityManager Reference Guide是一份指南文档,用于指导...
- 在EJB Bean中可以通过`@PersistenceContext`或`@PersistenceUnit`注解获得EntityManager。 - **Web容器中获得**: - 在Web应用中同样可以通过注解获得EntityManager。 - **J2SE中获得**: - 在标准Java环境中,...
- 使用`EntityManager`的`merge()`方法更新数据库中的用户记录。 #### 新增一个 Embeddable Class 1. **定义嵌入式类** - 创建一个`Address`类,该类将包含用户的地址信息。 - 使用`@Embeddable`注解标记该类。...
5. **事务管理**:在JPA中,事务控制是通过`entityManager.getTransaction()`获得,然后开始、提交或回滚事务。事务是数据库操作的基本单位,确保数据的一致性。 6. **查询语言JPA QL**:JPA QL是一种基于Java的...
通过模型外观(Model Façade)设计模式,可以更好地管理这些操作,确保实体之间的关系得到正确处理。具体来说,模型外观负责简单实体和主实体的CRUD操作,而主实体则负责管理与其关联的从实体的CRUD操作。这样可以...
#### 3.2 配置和获得 EntityManager EntityManager是处理实体的主要接口,通常通过`EntityManagerFactory`创建。在Java EE环境中,可以从`@PersistenceContext`注解的字段中注入EntityManager。 #### 3.3 Entity ...
EntityManager 和 Query API 都得到改进。比如说,现在可以从结果集中直接取得第一条记录 (JPA1.0 只允许从一个 unique 结果集中反回单个记录 ) ,指定 query 结果集的最大值,访问各个供应商的底层实体对象 ...
该标准由JSR 220定义,并在JSR 317中得到进一步发展和完善。JPA允许开发者使用简单的Java对象来表示持久化到数据库中的数据,这些对象称为实体(entity)。 **1.1.3 元数据** 元数据是指描述实体和数据库表之间映射...
6. slf4j-api.jar和slf4j-log4j12.jar:日志框架,Hibernate使用SLF4J作为日志接口,与Log4j结合使用记录框架内部的日志信息。 7. commons-collections.jar:Hibernate使用此库进行集合操作优化。 8. classmate....
- **获取EntityManagers**:描述了如何从EntityManagerFactory中获得EntityManager实例。 - **持久化上下文**: - **事务持久化上下文**:解释了事务上下文的概念及其作用。 - **扩展持久化上下文**:讨论了持久化...
例如,Spring框架的jar文件可能有`spring-core.jar`、`spring-context.jar`等,Struts可能包含`struts2-core.jar`,Hibernate可能有`hibernate-entitymanager.jar`、`hibernate-core.jar`等。对于Oracle,你可能会...
1. **配置和获得EntityManager** - 使用**@PersistenceContext**或**@PersistenceUnit**注入EntityManager。 2. **Entity的生命周期和状态** - **临时状态**:新创建但尚未保存到数据库中的实体。 - **托管状态*...
Hibernate API 是一个强大的Java持久化框架,用于简化数据库操作。...在优化性能和处理复杂查询时,可能需要结合两者的优势,或者使用更高级的工具如JPA(Java Persistence API)的`EntityManager`。
4. Session和EntityManager的改进:增强了Session和EntityManager的行为,使得在多线程环境下更易于管理。 5. 更好的错误处理:提供了更清晰的错误信息,便于开发者调试和解决问题。 三、关键组件解析 1. ...
2. **hibernate-entitymanager.jar**:提供了JPA的支持,允许开发者使用JPA API进行实体管理和事务处理。 3. **hibernate-validator.jar**:提供了Bean Validation的支持,用于实现实体验证逻辑。 4. **antlr-...
首先,Symfony2项目的实体管理器(EntityManager)是进行数据库查询的关键组件。通过调用`getDoctrine()->getEntityManager()`可以获得实体管理器的实例,进而与数据库交互。 接下来,我们需要获取特定的Repository...
5. **编写DAO(Data Access Object)**:设计接口和实现类,使用JPA的EntityManager进行CRUD操作,或者直接使用JDBC进行低级别操作。 6. **Selenium测试准备**:设置WebDriver,根据需要选择ChromeDriver、Gecko...
Struts2的核心库包括`struts2-core`,而Hibernate的依赖可能包括`hibernate-core`、`hibernate-entitymanager`以及JDBC驱动等。确保版本号与当前稳定版保持一致,以获得最佳兼容性和性能。 接着,配置项目的目录...