前面一节介绍了ejb的环境搭建与helloworld的例子,这节就不介绍ejb的环境了,直接EntityBean(实体bean)
一、环境配置
1、在jboss-4.2.3.GA\docs\examples\jca目录下的mysql-ds.xml(采用的是mysql数据库)复制到桌面,修改里面的内容为:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>xuDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/jpa</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>123456</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
2、将mysql-ds.xml复制到jboss-4.2.3.GA\server\default\deploy目录下
3、新建一个EntityBean的java工程,然后在src下面新建一个META-INF文件
4、然后在META-INF文件下面建一个persistence.xml
<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="xu" transaction-type="JTA"> <jta-data-source>java:xuDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence>
二、EJB代码编写
1、编写一个Person.java实体类
package com.xu.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Person implements Serializable{ private static final long serialVersionUID = 1026640919507025930L; private Integer id; private String name; public Person() { } public Person(String name) { super(); this.name = name; } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(length=20,nullable=false) public String getName() { return name; } public void setName(String name) { this.name = name; } }
2、编写一个PersonService.java接口
package com.xu.service; import java.util.List; import com.xu.entity.Person; public interface PersonService { public void save(Person person); public void delete(Integer id); public void update(Person person); public Person getPerson(Integer id); public List<Person> getAllPerson(); }
3、编写一个PersonServiceBean.java实现类
package com.xu.serviceImpl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.xu.entity.Person; import com.xu.service.PersonService; @Stateless @Remote(PersonService.class) public class PersonServiceBean implements PersonService{ @PersistenceContext(unitName="xu")//注意:这里要跟persistence.xml中的name一致 EntityManager em; @Override public void delete(Integer id) { em.remove(em.getReference(Person.class, id)); } @Override public Person getPerson(Integer id) { return em.find(Person.class, id); } @Override public void save(Person person) { em.persist(person); } @Override public void update(Person person) { em.merge(person); } @SuppressWarnings("unchecked") @Override public List<Person> getAllPerson() { return em.createQuery(" from Person").getResultList(); } }
4、将EntityBean工程打包到jboss-4.2.3.GA\server\default\deploy目录下
5、运行jboss中的run.bat
三、测试
1、编写一个PersonServiceTest.java测试类
package com.test; import java.util.List; import javax.naming.InitialContext; import org.junit.Before; import org.junit.Test; import com.xu.entity.Person; import com.xu.service.PersonService; public class PersonServiceTest{ private PersonService personService; @Before public void before() throws Exception{ InitialContext ctx = new InitialContext(); personService = (PersonService) ctx.lookup("PersonServiceBean/remote"); } @Test public void testSave(){ personService.save(new Person("小明")); } @Test public void testUpdate(){ Person person = personService.getPerson(1); person.setName("小王"); personService.update(person); } @Test public void testGetPerson(){ Person person = personService.getPerson(1); System.out.println(person.getName()); } @Test public void testGetAllPerson(){ List<Person> list = personService.getAllPerson(); for(Person person : list){ System.out.println(person.getName()); } } }
相关推荐
在这个 ejb 学习的例子中,我们将深入探讨实体Bean(Entity Bean)和会话Bean(Session Bean),以及它们如何与前端交互。 1. **实体Bean(Entity Bean)**: 实体Bean代表应用程序中的持久数据,通常映射到数据库...
在实验中,你可能还会学习到EJB的接口定义、实体Bean(Entity Bean,用于持久化数据)、消息驱动Bean(Message-Driven Bean,用于处理消息队列)以及EJB的生命周期管理。此外,理解EJB容器如何处理事务、安全性、...
在EJB规范中,实体Bean(Entity Bean)是一种特殊类型的组件,用于持久化数据到数据库,模拟业务对象。事务管理则是EJB中的重要组成部分,确保了业务操作的一致性和可靠性。 1. **EJB实体Bean** - **定义**: EJB...
5. **会话Bean的简化**:会话Bean(Session Beans)在EJB3.0中也得到了简化,可以声明为无状态(@Stateless)或有状态(@Stateful)。无状态Bean适用于处理不需保持上下文的请求,而有状态Bean则可以记住客户端的...
1. **注解驱动(Annotation-based)**:在EJB3中,开发者可以使用注解来声明组件的角色、生命周期方法和持久化属性,如`@Entity`、`@Stateless`、`@Stateful`、`@SessionBean`等,大大减少了XML配置文件的使用。...
在这个"Weblogic11g+EJB3的小例子"中,我们可以看到以下几个关键知识点: 1. **EJB3核心概念**: - **实体Bean(Entity Bean)**:代表业务数据模型,通常与数据库中的表进行映射。EJB3引入了JPA(Java ...
在EJB中,实体Bean(Entity Bean)是持久化对象的代表,它们负责存储和检索数据库中的数据。在这个“EJB实体Bean学习”主题中,我们将深入探讨实体Bean的两大类型——BMP(Business Managed Persistence)和CMP...
1. **EJB组件类型**:EJB包括三种主要类型:Session Beans(会话bean)处理客户端交互,Entity Beans(实体bean)代表持久化数据,Message-Driven Beans(消息驱动bean)用于处理JMS消息。 2. **EJB容器**:EJB容器...
在这个例子中,我们可能关注的是会话Bean,因为它们通常用于处理临时性的业务逻辑,包括与数据库的交互。 ### 2. 数据库连接 在EJB中,我们通常使用JDBC(Java Database Connectivity)API来建立与MySQL的连接。...
在这个例子中,我们关注的是实体Bean。在EJB3中,我们可以使用`@Entity`注解来声明一个类作为实体Bean。此外,`@Table`注解用于指定映射到的数据库表名,`@Id`注解标识主键字段。 例如,一个简单的实体Bean可能如下...
EJB系统由三个主要组件构成:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans)。这些组件可以看作是服务提供者,为客户端应用程序提供服务。 1. **会话bean**: - **...
EJB组件分为三种类型:Session Beans(会话bean)处理客户端请求,Entity Beans(实体bean)管理持久性数据,以及Message-driven Beans(消息驱动bean)用于处理JMS(Java Message Service)消息。 **Struts MVC...
在本“EJB简单例子”中,我们将探讨EJB的基本概念、类型以及如何创建和运行一个简单的EJB应用。 1. **EJB组件类型** - **会话Bean(Session Beans)**:代表客户端的临时会话,提供业务逻辑服务。分为无状态会话...
EJB主要分为三种类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。其中,会话Bean代表临时的业务逻辑,实体Bean则封装持久化的数据,而消息驱动Bean则用于处理...
这个"JSF+EJB成功的小例子"是一个综合实践,展示了如何在Java EE环境中整合JSF的UI优势和EJB的业务处理能力。通过解压提供的`JSF_EJB.war`文件并部署到指定目录,开发者可以学习如何在实际项目中使用这些技术,以及...
在"**EJB3.0+JSF例子**"教程中,你将学习如何结合使用这两种技术,创建一个完整的、功能丰富的Web应用程序。教程可能涵盖了从创建EJB Bean和JSF Managed Bean,到配置和部署应用,以及处理用户交互和事务处理的全...
在这个例子中,`@Stateless`注解声明了这是一个无状态Session Bean,`doSomething`方法展示了如何暴露业务逻辑。 **结论** EJB 3.0的Session Bean为开发企业级应用提供了强大且灵活的工具。通过理解其核心概念和...
**EJB 3 开发框架详解** EJB(Enterprise JavaBeans)是Java平台上的企业级组件模型,...在ejb01例子中,我们可以看到一个基于EJB3的简单示例,通过学习和实践这个例子,可以更好地理解和掌握EJB3的核心概念和技术。
2. **实体Bean(Entity Bean)** - **传统实体Bean(CMP, Container-Managed Persistence)**:容器负责管理对象的持久化状态,开发者只需要提供业务逻辑。这种类型的Bean通常映射到数据库中的表。 - **Java ...
EJB2.X 的使用例子,讲解了EJB2.X Entity Bean如何映射数据至表中, Session Bean如何使用,客户端调用Session Bean 中的业务方法. 有问题,请联系本人: QQ:343827585 (注:源码下载后,请删除后缀名为 .java的相应...