对于数据的持久化问题,我们很容易想到,也很长用到持久化框架jpa.
持久化框架实现起来主要包括以下几个部分
1开发持久化bean
Persistence.xml
配置jboss数据源
编写实体类
供业务逻辑类进行调用
2持久化实体管理器EntityManager
3EJB-QL
4OR映射
下面通过具体创建一个实例具体说说这几部分的作用:
配置数据源
……….
创建一个ejb项目:
以上“test”这个名称是用来跟指定的数据库打交道的。
JNDI Data Source按照图片上面输入(MySqlDs是刚才的数据源名称)
在创建完成之后,自动在META-INF目录下添加了persistence.xml文件:
这个配置文件是为了寻找我们上面创建的
开发持久化实体bean:
@Entity
public class Person {
private int id;
private String name;
/**
* @return Returns the id.
*/
@Id
@GeneratedValue
public int getId() {
return id;
}
/**
* @param id The id to set.
*/
public void setId(int id) {
this.id = id;
}
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name toset.
*/
public void setName(String name) {
this.name = name;
}
}
在JBOSS应用服务器中,JPA是由Hibernate来作为底层的实现,因此,我们可以在persitence.xml中配置一些与Hibernate相关的属性,比如下面的配置:
部署EJB项目之后,即可以看到JBOSS自动导出了数据库表。
至此,一个持久化的框架就开发完毕,下面说怎样用业务逻辑类来调用它。
@Stateless
@Remote
public class PersonManagerBean implements PersonManager{
@PersistenceContext(unitName="test")
protected EntityManager em;
public void addPerson(String name) {
Person p = new Person();
p.setName(name);
em.persist(p);
}
}
PersistenceContext是实体化管理器,通过它我们可以直接获取后台的实体并进行操作。
EJB-QL:
为了实现在容器管理持久性实体类型ejb组件中,查找(finder)方法和选择(select)方法中数据库查询以及对该组件的容器管理关系查询过程中查询语言的规范化,ejb2.0规范以92版结构化查询语言(sql-92)规范为蓝本,定义了ejb规范中标准查询语言——ejb ql。
更多关于ejb-ql语言和OR映射的内容大家可以另行参考,这里不再详细说明。