数据持久化框架(JPA)及其具体实现

来源:互联网 发布:js 循环删除数组元素 编辑:程序博客网 时间:2024/05/16 18:44

           对于数据的持久化问题,我们很容易想到,也很长用到持久化框架jpa.

           持久化框架实现起来主要包括以下几个部分

                   1开发持久化bean

                           Persistence.xml

                           配置jboss数据源

                           编写实体类

                           供业务逻辑类进行调用

                   2持久化实体管理器EntityManager

                   3EJB-QL

                   4OR映射

         下面通过具体创建一个实例具体说说这几部分的作用:

                  配置数据源    

                 拷贝数据库驱动到JBOSS_HOME/server/default/lib    

                 拷贝docs/examples/jca/mysql-ds.xml/server/default/deploy目录下,并修改数据库用户名及密码    

                 Mysql-ds.xml文件的内容类似下面所示:

     

 <datasources> <local-tx-datasource>   <jndi-name>MySqlDS</jndi-name>   <connection-url>jdbc:mysql://localhost/ejb3</connection-url>   <driver-class>com.mysql.jdbc.Driver</driver-class>   <user-name>root</user-name>   <password>root</password>                   ……….


                  创建一个ejb项目

 


                  以上“test”这个名称是用来跟指定的数据库打交道的。

                 JNDI Data Source按照图片上面输入(MySqlDs是刚才的数据源名称)

                在创建完成之后,自动在META-INF目录下添加了persistence.xml文件:

 

               这个配置文件是为了寻找我们上面创建的数据库的。

 

                  开发持久化实体bean:

 

@Entitypublic class Person {private int id;private String name; /** * @return Returns the id. */@Id@GeneratedValuepublic 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映射的内容大家可以另行参考,这里不再详细说明。

 



原创粉丝点击