一ejb 服务端 基于ejb容器 ,客户端src下需要配置jndi配置文件
*实体对象
Java代码
@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;
}
@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;
}
*实体管理接口
Java代码
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);
}
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);
}
*实体管理的实现
Java代码
@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));
}
}
@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代码
<?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>
<?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>
二客户端
Java代码
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);
}
}
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代码
<?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实体Bean的概念、其在Eclipse集成开发环境中的使用,以及与MySQL数据库的集成。 ### 一、EJB实体Bean概述 EJB实体Bean是Java EE应用服务器管理的对象,它们负责处理数据存储和检索。实体Bean...
首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与数据库中的记录相对应,负责存储和检索数据。EJB 3.0引入了注解驱动的开发方式,大大简化了实体Bean的编程模型,使得开发者不再需要编写...
EJB3.0实体的注解规范主要涵盖了Java企业版(Java EE)中实体Bean的定义方式,这一规范也适用于Java Persistence API (JPA),并且整合了Hibernate的特有扩展。在EJB3.0中,实体Bean被设计为简单的Plain Old Java ...
【实战EJB之四 开发实体CMP(EJB 1.1规范)】 实体Bean(Entity Bean)在Java企业版(Java EE)中扮演着关键角色,它主要用于表示后端数据库中的持久化对象,比如数据库记录。在EJB 1.1规范中,实体Bean分为两种...
#### 五、实战EJB之四:开发实体Bean CMP(EJB1.1规范) **EJB1.1规范中的CMP** CMP (Container Managed Persistence) 是一种容器管理的持久化机制,用于简化实体Bean的数据存储过程。在EJB1.1规范中,CMP允许...
EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要负责处理业务逻辑。EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了许多简化和改进,使得开发更加高效且易于理解。本文将深入探讨EJB3中...
// 实体类的字段和方法 } ``` 2. **@Table** - 用于指定实体映射到的数据库表的名称。如果省略,则默认使用类名。 3. **@Id** - 用于指定实体的主键字段。这个字段是唯一的,用于区分不同的实体实例。 4. **@...
这个例子可能包含了EJB接口、实现类、实体类和相关的配置文件。通过阅读和分析这些文件,你可以更好地理解EJB实体Bean的工作原理和使用方法。 总之,EJB实体Bean是Java EE开发中的重要概念,它简化了服务器端应用...
例如,`@Entity`注解用于标记一个类作为实体Bean,表明这个类将代表数据库中的一个表。主键由`@Id`注解指定,它可以有多种生成策略,如TABLE、SEQUENCE、IDENTITY、AUTO和NONE,每种策略对应不同的主键生成方式。 ...
理论上任何Java类都可能被视为一个Bean,但在实践中,JavaBean通常具备无参数构造函数,并实现了`Serializable`接口以支持持久化。JavaBean类似于COM模型中的本地进程内组件,不具备跨进程访问能力。 - **...
开发者不再需要关注复杂的EJB接口和生命周期管理,而是通过注解和简单的配置文件即可完成实体类到数据库表的映射。 #### 三、部署描述符的变化 - **EJB 2.0**:要求显式定义部署描述符(Deployment Descriptors),...
`@Entity`注解标记实体类,`@Table`定义映射的数据库表,`@Id`标识主键字段。此外,还有`@GeneratedValue`用于自动生成主键值。 **三、Message-Driven Bean(MDB)** MDB是EJB3中的消息驱动组件,主要用于处理JMS...
2. **实现会话Bean类**:创建一个实现远程接口的类,并使用注解来指定其为EJB。 3. **部署并测试**:将EJB部署到应用服务器上,并编写客户端代码来测试会话Bean的功能。 #### 6. 结论 虽然随着微服务架构的流行,...
理解如何正确设计数据访问对象(DAO)和实体类对于确保数据一致性至关重要。 七、安全性 EJB提供了内置的安全机制,包括角色基线访问控制(Role-Based Access Control, RBAC)和方法级别的安全性。开发者可以通过@...
在给定的场景下,我们讨论的是如何使用Hibernate反向工程生成包含EJB注解的实体类。 首先,我们需要创建一个Web项目,这是构建基于Java的Web应用程序的基础。在MyEclipse这样的集成开发环境中,可以方便地创建和...
`Hibernate 基础1.ppt`可能涵盖Hibernate的基本用法,如实体类的定义、属性注解、一对一、一对多、多对多的关联映射,以及如何通过Hibernate API进行CRUD操作(创建、读取、更新、删除)。此外,还可能介绍到HQL...
**EJB3.0之HelloWorld** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,主要用于构建可扩展、可移植和可信赖的企业级应用。EJB3.0是EJB规范的一个重要版本,它在之前的基础上进行了重大改进,...
5. **实体Bean(Entity Beans)**:EJB3.0中的实体Bean主要基于JPA,使用`@Entity`注解标识,允许开发者直接操作数据库记录。实体Bean可以通过`@GeneratedValue`注解来自动分配主键。 6. **容器管理的事务...
1. **实体映射(Entity Mapping)**:如何使用注解或XML来定义实体类和数据库表之间的映射关系。 2. **查询语言(Query Language)**:JPA提供了JPQL(Java Persistence Query Language),一种类似SQL的查询语言,...