数据持久化框架(JPA)
2016-02-29 20:50
302 查看
对于数据的持久化问题,我们很容易想到,也很长用到持久化框架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:
@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映射的内容大家可以另行参考,这里不再详细说明。
持久化框架实现起来主要包括以下几个部分
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:
@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映射的内容大家可以另行参考,这里不再详细说明。
相关文章推荐
- 半年小总结
- C/C++,指针的定义和使用
- IOS中的KVO机制详解
- iOS实现主题切换技术点之一
- InvalidOperationException was unhandled by user code
- 瀑布流ScrollVIew的简易逻辑思维
- leetcode之Flatten Binary Tree to Linked List
- 航电OJ-1874畅通工程续
- 集合的toString()方法源码解析
- DFS,BFS,前序,中序,后序,层序遍历
- nios II--实验3——led 100M硬件部分
- 源码编译安装screen
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- JAVA学习笔记——JAVA中的IO流
- Spring 源码分析(三) —— AOP(一)AOP原理
- 文本分类学习笔记(5)- KNN
- CentOS6.5下编译Hadoop-2.7.2
- notification的理解
- Vector和iterator的使用心得
- Ubuntu /bin/sh /bin/bash /bin/dash 区别