一ejb 服务端 基于ejb容器 ,客户端src下需要配置jndi配置文件
*实体对象
@Entity
public class Person implements Serializable {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@GeneratedValue
private int id;
private String name;
}
*实体管理接口
import java.util.List;
public interface PersonManager {
public void addPerson(Person person);
public Person getPerson(int id);
public Person getPerson2(int id);
public List<Person> getPersons();
public void updatePerson(Person person);
public void deletePerson(int id);
}
*实体管理的实现
@Stateless
@Remote
@Local
public class PersonImpl implements PersonManager {
@PersistenceContext(unitName="test")
private EntityManager entityManager;
public void addPerson(Person person) {
entityManager.persist(person);
//throw new RuntimeException("ddddddddddd");
}
public Person getPerson(int id) {
//相当于hibernate中的load,是懒加载的
Person p=entityManager.getReference(Person.class, id);
System.out.println(p.getName());
return p;
}
public Person getPerson2(int id){
//相当于hibernate中的get
Person p=entityManager.find(Person.class, id);
return p;
}
public List<Person> getPersons(){
return entityManager.createQuery(" from Person").getResultList();
}
public void updatePerson(Person person){
entityManager.merge(person);
}
public void deletePerson(int id){
entityManager.remove(getPerson(id));
}
}
persistence.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="test" transaction-type="JTA">
<jta-data-source>java:/MySqlDS</jta-data-source>
<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>
</persistence>
二客户端
public class Client {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
InitialContext context =new InitialContext();
//UserTransaction um=(UserTransaction )context.lookup("UserTransaction");
//um.begin();
PersonManager pm=(PersonManager)context.lookup("PersonImpl/remote");
// Person p=new Person();
// p.setName("www");
// pm.addPerson(p);
//Person p=pm.getPerson(5);
//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);
}
}
三 jboss 数据源的配置
jboss 安装目录D:\jboss-4.0.5.GA\server\default\deploy 下放入
mysql-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mysql-ds.xml 41016 2006-02-07 14:23:00Z acoliver $ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/ejb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>bjsxt</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
-->
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
分享到:
相关推荐
EJB.JPA-数据库持久层开发实践详解,感兴趣的人可以阅读一次
EJB(Enterprise JavaBeans)和JPA(Java Persistence API)是Java企业级开发中的核心组件,主要用于构建可扩展且可靠的后端系统。本实践详解主要围绕这两者在数据库持久层的开发应用,帮助开发者深入理解并掌握相关...
Maven-EJB-JPA-JSF-Primefaces 用 Java 与 Maven、EJB、JPA、JSF 和 Primefaces 一起制作的示例项目。 我已经做了 5 年多的 Java Web 开发人员。 但是我只接触过像XSLT这样的较差的框架,它只读取Servlet发送的XML...
### EJB_JPA数据库持久层开发详解 #### JPA与数据持久化技术 **数据持久化**是指将程序运行时的数据保存到永久存储设备中,以便在下次运行时能够读取和使用这些数据。在Java领域,有多种数据持久化技术,包括序列...
EJB处理核心业务逻辑,JSF负责用户界面,JPA处理数据持久化,而MINA则用于构建高效的网络通信层。结合使用,它们可以构建出复杂、可扩展且易于维护的系统。对于初学者来说,掌握这四者将极大地提升在Java EE领域的...
实际上,EJB-QL是JPQL的一个子集,因此,对EJB-QL的理解有助于掌握JPA的查询机制。 **最佳实践** 1. **保持查询简洁**:尽量避免过于复杂的查询,这可能会影响性能和可读性。 2. **使用命名查询**:预定义的命名...
- EJB 3.0引入了Java Persistence API(JPA),用注解替代XML配置,简化了实体bean的管理。 4. **消息驱动bean**: - 消息驱动bean是响应JMS(Java Message Service)消息的bean,通常用于异步处理任务,提高系统...
标题 "TP1-JSF2-EJB-JPA:TP1与米歇尔·布法(Michel Buffa)" 暗示这是一个与Java相关的技术实践项目,由米歇尔·布法(Michel Buffa)设计或参与。项目可能包含了使用JavaServer Faces (JSF) 2.0、Enterprise ...
在IT行业中,`JSF(JavaServer Faces)`、`EJB(Enterprise JavaBeans)`和`JPA(Java Persistence API)`是三个重要的Java技术,常用于构建企业级的应用系统,特别是拍卖系统这样的业务流程复杂的场景。这里我们将深入...
在EJB(Enterprise JavaBeans)框架中,JPA被广泛使用,提供了一种面向对象的方式来处理数据库交互。本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将...
### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...
- 持久化API:Java Persistence API(JPA)是EJB 3.0的一部分,它提供了一种标准的方式来管理对象-关系映射(ORM)。 - 无状态会话bean:用于执行独立的业务操作,不维护任何客户端会话信息。 - 有状态会话bean:...
在EJB 3.1中,实体bean主要通过JPA(Java Persistence API)进行管理,允许开发者使用ORM(对象关系映射)来处理数据库操作。 3. **消息驱动bean(Message-Driven Beans,MDB)**:专门用于处理JMS(Java Message ...
ejb-persistence.jar JPA注解
### EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展 #### 一、概述 EJB3.0引入了一种新的编程模型,它基于Java Persistence API (JPA),使得开发人员能够更加轻松地创建企业级应用。JPA允许使用POJO(Plain Old...
### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...
EJB 3.1引入了注解驱动的JPA(Java Persistence API),简化了实体管理,使得开发者可以直接在类上使用注解来定义实体关系。 5. **生命周期方法**:如`@PostConstruct`和`@PreDestroy`,分别在Bean实例初始化后和...