JPA和实体Bean的应用.docx
《JPA和实体Bean的应用.docx》由会员分享,可在线阅读,更多相关《JPA和实体Bean的应用.docx(14页珍藏版)》请在冰豆网上搜索。
JPA和实体Bean的应用
实验七:
JPA和实体Bean的应用
7.1实验要求:
(1)利用JPA开发一个数据库读写的例子
(2)利用实体Bean开发一个数据库读写的例子
7.2实验目的:
(1)掌握JPA开发步骤
(2)掌握实体Bean开发步骤
7.3实验步骤:
7.3.1开发JPA应用
(1)开发思路:
a.创建一个项目,并添加JPACapabilities(JPA开发功能);
b.使用DatabaseExplorer视图来选中表并反向工程生成JPA代码。
(2)准备工作:
新建XSB表:
列名
描述
数据类型
可空
默认值
说明
XH
学号
Char(6)
×
无
主键
XM
姓名
Char(8)
×
无
XB
性别
bit
×
无
1:
男,0:
女
CSSJ
出生时间
datetime
√
无
ZY_ID
专业ID
int
×
无
ZXF
总学分
int
√
无
BZ
备注
Varchar(200)
√
无
ZP
照片
mediumblob
√
无
在MyEclipseDatabaseExplorer视图下,建立一个MySQL数据库的连接(略)
(3)新建一个JavaProject:
hellojpa
(4)添加JPA的开发能力
(5)新建package:
cn.ujn.jpa.dao
(6)切换到MyEclipseDatabaseExplorer视图下,选中表xsb并反向工程生成JPA代码
(7)切换回MyEclipseJavaEnterprise视图下,查看生成的代码:
(8)编写测试类:
新建类TestJPA.java
代码如下
……
publicclassTestJPA{
publicstaticvoidmain(String[]args){
IXsbDAOxsbdao=newXsbDAO();
Xsbxsb=newXsb();
xsb.setXh("201001");
xsb.setXm("刘鹍");
xsb.setXb(Byte.valueOf("0"));
xsb.setZyId(123);
xsb.setCssj(Date.valueOf("1980-01-01"));
xsb.setZxf(170);
xsb.setBz("备注");
EntityManagerHelper.beginTransaction();
xsbdao.save(xsb);
EntityManagerHmit();
Listxslist=xsbdao.findAll();
for(Xsbxs:
xslist){
Stringxb=xs.getXb().toString().equals("0")?
"男":
"女";
System.out.println("姓名:
"+xs.getXm()+"学号:
"+xs.getXh()+"性别:
"+xb);
System.out.println("---------------------------------------------------");
}
}
}
运行结果如下
7.3.2开发实体Bean应用
(1)开发思路:
a.创建一个EJB项目;
b.使用DatabaseExplorer视图来选中表并反向工程生成EJB3代码。
(2)准备工作
新建XSB(略)
新建mysql数据库连接(略)
新建JNDIDataSource
找到DataSource的模板,路径(jboss-4.2.3.GA\docs\examples\jca)如下图所示,找到mysql-ds.xml。
更改mysql-ds.xml代码:
……
mysqlDS
jdbc:
mysql:
//localhost:
3306/javaee
com.mysql.jdbc.Driver
root
root
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
……
mySQL
修改后,拷贝mysql-ds.xml到jboss-4.2.3.GA\server\default\deploy下,重启JBoss
(3)新建EJBProject:
helloEntityBean
(4)新建package:
cn.ujn.ejb.entity
(5)换到MyEclipseDatabaseExplorer视图下,选中表xsb并反向工程生成EJB3代码
(6)查看生成的代码:
(7)打包,发布到JBoss中
(8)新建JavaProject:
testEntityBean
(9)在该项目的属性中,修改JavaBuildPath,增加JBossclient下的jar包
(10)在testEntityBean中新建package:
cn.ujn.ejb.entity
(11)把helloEntityBean项目中的Xsb.java和接口XsbFacadeRemote.java拷贝到cn.ujn.ejb.entity中
(12)编写测试类
新建jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost\:
1099
新建测试类(带main方法),代码如下:
publicstaticvoidmain(String[]args){
InitialContextctx;
try{
ctx=newInitialContext();
XsbFacadeRemotexsbFacade=(XsbFacadeRemote)ctx.lookup("XsbFacade/remote");
Xsbxsb=newXsb();
xsb.setXh("201002");
xsb.setXm("刘小鹍");
xsb.setXb(Byte.valueOf("0"));
xsb.setZyId(123);
xsb.setCssj(Date.valueOf("1980-01-01"));
xsb.setZxf(170);
xsb.setBz("备注");
xsbFacade.save(xsb);
Listxslist=xsbFacade.findAll();
for(Xsbxs:
xslist){
Stringxb=xs.getXb().toString().equals("0")?
"男":
"女";
System.out.println("姓名:
"+xs.getXm()+"学号:
"+xs.getXh()+"性别:
"+xb);
System.out.println("---------------------------------------------------");
}
}catch(NamingExceptione){
System.out.println(e.getMessage());
}
}
运行结果: