|
JBoss的EJB3实现中,就使用Hibernate EntityManager 和Annotations 作为数据持久化机制,本文不准备讨论如何在JBoss中使用Hibernate EntityManager 我们在本文中看看如何在JSE环境中使用EntityManger, 这样当你的项目需要扩展到JEE容器中时,同样的EntityManger升级是很简单的. OK,下面我们看看如何在JSE环境中应用EntityManager吧:
环境配置: JDK : v5.0 or 更新 Hibernate core : v3.1.1 or 更新(要包涵Hibernate Core所需要的Jar库) Hibernate Annotation: v3.1beta8 Hibernate EntityManger: v3.1beta6
下面看两个相关的定义
EntityManagerFactory EntityManagerFactory 提供 Entity manager的实例(instances:所有被配置的实例都连接相同的数据库)利用相同的默认设置.你可以准备几个EntityManagerFactory 来访问不同的数据库.该接口(interface)和Hibernate core中的SessionFactory差不多.
EntityManager EntityManager API 是用来在一个特别的工作单元(particular unit of work)中访问数据库的.她用来创建和删除(create and remove) 持久实体实例的;可以通过实体的主键标识符(primary key identity)来查询(find)实体;或者查询所有实体. 这个接口和Hibernate core中的Session差不多. 因此,使用Hibernate EntityManager 和使用Hibernate Core 是差不多的,只不过 EntityManger还可以方便的在JEE容器中使用,这就是EJB3 的持久化实现机制. 下面我通过一个来自EntityManger test suit中的修改版的简单示例来演示一些如何在JSE环境中配置和操作持久化实体.
下面是一个利用Hibernate Annotation注释的持久化实体: /* * Created on 2006-2-5 * @author icerain */ package test.test;
import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EntityResult; import javax.persistence.FieldResult; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.SqlResultSetMapping;
@Entity(name = "Item") // @SqlResultSetMapping(name = "getItem", entities = // @EntityResult(name = "org.hibernate.ejb.test.Item", fields = { // @FieldResult(name = "name", column = "itemname"), // @FieldResult(name = "descr", column = "itemdescription") // }) //) //@Cache(region="Item", usage=NONSTRICT_READ_WRITE) public class Item implements Serializable {
private String name; private String descr; //private Set distributors;
public Item() { }
public Item(String name, String desc) { this.name = name; this.descr = desc; }
@Column(length = 200) public String getDescr() { return descr; }
public void setDescr(String desc) { this.descr = desc; }
@Id @Column(length = 30) public String getName() { return name; }
public void setName(String name) { this.name = name; }
// @OneToMany // public Set getDistributors() { // return distributors; // } // // public void setDistributors(Set distributors) { // this.distributors = distributors; // } // // public void addDistributor(Distributor d) { // if ( distributors == null ) distributors = new HashSet(); // distributors.add( d ); // } }
1
2
下一页>>
|