使用jpa配置步骤回顾:
1、
拷贝数据库驱动到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>
........
2、建立一个项目支持EntityBean(给项目添加jpa支持)
3、在创建完成后,会自动在META-INF下添加persistence.xml配置文件
<!-- 注意配置文件的各个配置项要与jboss\server\default\deploy\mysql-ds.xml的配置文件要相符 -->
<persistence-unit name="test" transaction-type="JTA">
<jta-data-source>java:/MySqlDS</jta-data-source>
<class>com.bjsxt.jpa.Person</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
4、具体编码
//参数传值对象User注意序列化
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person implements Serializable{
@Id
@GeneratedValue
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
//定义接口
public interface PersonService {
public void addPerson(Person person);
public void delPerson(int id);
public void updatePerson(Person person);
public List<Person> getPerson();
public Person getPerson(int id);
public void delPerson(Person p);
}
//定义实现
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
@Remote
@Local
public class PersonServiceImpl implements PersonService {
@PersistenceContext(unitName="test")
private EntityManager entityManager;
public void delPerson(int id) {
entityManager.remove(getPerson(id));
}
public List<Person> getPerson() {
return entityManager.createQuery("from Person").getResultList();
}
public void updatePerson(Person person) {
entityManager.merge(person);
}
public void addPerson(Person person) {
entityManager.persist(person);
}
public Person getPerson(int id) {
Person p = entityManager.getReference(Person.class, id);
//find相当于Hibernate中的get
//entityManager.find(Person.class, id);
//getReference相当于Hibernate中的load,是懒加载的如果直接在客户端调用会因为session关闭而报错,采用get不会出现此问题
//加入下面的一句话,让session提前将数据加载上来再关闭。
System.out.println(p.getName());
return p;
}
public void delPerson(Person p) {
entityManager.remove(p);
}
//客户端测试
import javax.naming.InitialContext;
import javax.transaction.UserTransaction;
import com.bjsxt.jpa.Person;
import com.bjsxt.jpa.PersonManager;
public class Client {
public static void main(String[] args) throws Exception {
InitialContext context =new InitialContext();
PersonManager pm=(PersonManager)context.lookup("PersonImpl/remote");
Person p=new Person();
p.setName("www");
pm.addPerson(p);
Person p=pm.getPerson(5);
//因为服务器端用的是getReference 所以上一句的getPerson方 法调用完成之后一次会话结束,Session已经关闭,所以下面p.getName会报错误,但我们在方法中又加入了一句System.out.println(p.getName());将数据提前加载了所以不会报错了
System.out.println(p.getName());
Person p=pm.getPerson2(5);
System.out.println(p.getName());
//System.out.println(pm.getPersons().size());
//um.commit();
Person p=new Person();
p.setId(5);
p.setName("xxxxxxxxxxxxx");
pm.updatePerson(p);
pm.deletePerson(5);
}
}
分享到:
相关推荐
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的...
基于JSF+EJB3+JPA的竞价拍卖系统,服务器为JBOSS
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part2
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第10章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分...
eclipse3.6创建EJB+JPA+EAR(每个都是单独工程)完整介绍:自动创建表结构、数据源配置、jpa和ejb工程添加到ear包中。以及注入Emanager。 要这么高的分只是为了物有所值。
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发 PDF 书籍 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message ...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part2
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第二章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3
关于jsf+ejb+jpa整合,光盘上代码这样写的。
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
JPA学习笔记-EJB-06JPA+Spring使用经验。
如果运行一切正常,那么你会看到使用EJB 3.0组件与JPA技术层技术完成的Hello world演示应用。 注意:配置JBoss服务器和调试的动作参见readme.txt文档,有详细说明怎样匹配连接池,以及可能遇到的问题及解决办法。该...
压缩包中包含:EJB3.0实例教程 JPA教程 实战EJB三本电子书,都是不错的学习资料。
EJB3使用注解进行开发总结,主要适用于快速入门的朋友
分布式宠物商店(EJB3+JPA+Struts2) 宠物商店(petstore)是个比较经典的demo案例, 以宠物商店充分演示EJB3与Java Web程序,Java图形界面程序的结合 主要模块:会员模块 宠物类别模块 宠物模块 购物模块
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第9章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则...
有关JSF、EJB、JPA访问数据库的方法。