使用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);
}
}
分享到:
相关推荐
本篇文章将深入探讨ejb3与JPA的关系,以及如何在实际项目中使用它们。 ### JPA概述 Java Persistence API是Java EE平台的一部分,它提供了一套标准API,用于在Java应用程序中实现ORM。JPA允许开发者使用面向对象的...
在拍卖系统中,JPA负责将拍卖物品、用户、出价等业务对象与数据库表之间的映射,通过编写简单的实体类和配置,即可实现对象与SQL的透明转换。JPA提供了查询语言JPQL,类似于SQL,但更面向对象,方便对数据库进行复杂...
经典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的...
在IT行业中,`JSF(JavaServer Faces)`、`EJB(Enterprise JavaBeans)`和`JPA(Java Persistence API)`是三个重要的Java技术,常用于构建企业级的应用系统,特别是拍卖系统这样的业务流程复杂的场景。这里我们将深入...
### EJB3+JPA开发总结 #### 一、EJB3概述 EJB3 (Enterprise JavaBeans 3) 是Java EE平台上的一个重要组件,它主要用于构建企业级应用程序中的业务逻辑层。相比于早期版本,EJB3进行了大量改进,简化了许多开发流程...
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part2
【EJB学习大全】是针对企业级Java应用开发的一个重要主题,主要涵盖了EJB3.0、JPA教程以及实战EJB的相关知识。EJB,全称为Enterprise JavaBeans,是Java平台上的一个核心组件,主要用于构建分布式、面向服务的企业级...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第10章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分...
在实际项目中,EJB 3.0与JPA的结合使用通常包括以下几个步骤: 1. **实体定义**:创建表示数据库表的Java类,并使用JPA注解进行配置。 2. **持久化上下文**:通过EntityManager实例管理实体的生命周期,包括加载、...
经典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部分...
总结来说,"JPA内嵌EJB"是关于在非Java EE环境中使用JPA和EJB组件的技术,它涉及会话bean的管理、JNDI查询以实现对象注入,以及代理对象在数据访问优化中的作用。"EJBServer"文件可能提供了具体实现的实例,有助于...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3
5. EJB与JPA的集成,包括如何在EJB中注入EntityManager,以及如何在EJB方法中启动和管理事务。 6. 实践案例,可能包含了一个完整的EJB+JPA应用的开发流程,包括设计数据库模型、编写实体类、实现业务逻辑和部署应用...
在本书中,作者李刚将指导读者如何在WebLogic和JBoss这两种不同的应用服务器环境下,使用JSF、EJB 3和JPA来构建高效的企业级应用。通过实际案例,读者可以学习到如何设计和实现复杂的业务逻辑,如何处理事务、安全性...
本篇文档将全面探讨JPA的核心概念、功能以及在EJB3框架中的应用。 一、JPA概述 1.1 数据持久化 数据持久化是指将程序运行中的数据保存到持久存储介质,如硬盘或数据库,以便在系统重启或关闭后仍能恢复数据。例如...