持久化框架数据持久化框架(JPA)及其具体实现
时间紧张,先记一笔,后续优化与完善。
对于数据的持久化问题,我们很容易想到,也很长用到持久化框架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@Remotepublic 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映射的内容大家可以另行参考,这里不再详细说明。
文章结束给大家分享下程序员的一些笑话语录: 一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
那条狗就进去申请,但是被拒绝了。
「我不能雇一条狗在公司里做事。」经理说。
狗不服气,指着告示上「均等机会」几字抗议。
经理没法,叹了口气,不屑地问道:「你会编程吗?」
那条狗默默地走到电脑前,编了个程序,运作准确。
「你有团队精神吗?」经理问。
那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
「我真的不能雇狗做这份工作。」经理气急败坏地说。
「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
那条狗抬头看着经理说:「喵-噢。」
--------------------------------- 原创文章 By
持久化和框架
---------------------------------
转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/31/3111537.html
持久化框架数据持久化框架(JPA)及其具体实现相关推荐
- python变量持久化_Python 数据持久化:JSON
Python 数据持久化:JSON 编程派微信号:codingpy 淡蓝色字体可以直接点击查看 上周更新的<Think Python 2e>第14章讲述了几种数据持久化的方式,包括dbm. ...
- mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)
1.在setting.py中定义相关变量 #定义mysql相关变量 MYSQL_HOST = '127.0.0.1' MYSQL_USER = 'root' MYSQL_PWD = '123456' ...
- 数据持久化mysql_Nacos数据持久化到MySQL
阅读文本大概需要3分钟. Nacos在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况.0.7版本增加了支持mysql数据源能力,具体的操作步骤:安装 ...
- scrapy框架对接seleniumpipeline数据持久化
文章目录 1.**scrapy对接selenium** 2.pipeline数据持久化 1.scrapy对接selenium 动态数据加载: 1.ajax: ①url接口存在规律, 可以自行构建url ...
- android数据持久化框架,Android:数据持久化、Environment、SharedPreferences、内部存储internalStorage...
1.数据持久化-SDCard//数据持久化-SDCard findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @ ...
- Android数据持久化技术
Android 数据持久化技术 数据持久化 文件存储 将数据存储到文件中 从文件中读取数据 SharedPreferences存储 使用SharedPreferences存储数据 从SharedPre ...
- D2Admin 8月更新: 高级数据持久化|标签页右键|模块化等
剧透:这次,D2Admin 带来了其它同类模板都没有的"花式"数据持久化功能,以及极少同类产品才有的标签页右键控制... 概述 D2Admin 7月份更新到了 1.1.5 版本 相 ...
- Android:数据持久化、Environment、SharedPreferences、内部存储internalStorage
1.数据持久化-SDCard //数据持久化-SDCard findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@ ...
- redis的基本操作And数据持久化方式以及redis实现mybatis缓存
Redis 1.NoSql # NoSql(Not Only Sql),不仅仅是sql,泛指非关系型数据库 2.NoSql的诞生 随着互联网web2.0网站的兴起,传统的关系型数据库在高并发和特大规模 ...
最新文章
- yslow前端性能测试工具
- 售后服务成OA品牌竞争重要因素
- H3C S5120-52P-WiNet交换机配置
- TP查看已部署的TP框架的版本
- plsql(轻量版)_记录类型1
- html回复评论_3天内看了3000多篇《哈佛商业评论》,挑出来最有用的分享下
- [转载] 民兵葛二蛋——第27集
- Eclipse添加注释的快捷键alt+shift+j,在菜单中是source-gt;generate element comment
- 查python的软件_Python制作天气查询软件【python实战必学】
- linkedin 不能登录_如何不在LinkedIn上接近我
- 一款轻量级android图表组件SimpleChart-Kotlin
- 旧版微信支付文档链接
- 乱码(四): 撬动地球的支点
- libcef-编译运行模式-MTD/MT-MDD/MD
- python创建xlsx文件_教程1:创建一个简单的XLSX文件
- 客户画像--指标标签体系设计方案----业务视角
- 静态代理和动态代理区别(是否有实现类)
- pcr技术发展史——人类核酸研究的前世今生
- 有趣的Javascript:只需一个JS让万恶的IE5、IE6、IE7、IE8全都支持H5原生Canvas绘图(有演示demo)
- php 怎么把数组按拼音,php数组如何按拼音顺序排序
热门文章
- 2016蓝桥杯C++A:消除尾一(二进制运算)
- Unity3D基础20:游戏打包发布
- bzoj 2152: 聪聪可可(树的点分治)
- bzoj 4491: 我也不知道题目名字是什么(线段树区间和并)
- torch.utils.data.DataLoader 详解
- 安卓应用间的数据共享:ContentProvider、ContentResolver全解
- 简单分析FFT坐标轴的生成方式和幅值大小
- 模板能够让我们花更少的时间,得到更多的东西
- 卸载MySQL以及重装卡到Start Services的解决办法(亲测有效,刚重装成功)
- python错误笔记