`
zhaoshijie
  • 浏览: 2265588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EJB之实体类

    博客分类:
  • EJB
阅读更多
一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实例

    本篇文章将深入探讨EJB实体Bean的概念、其在Eclipse集成开发环境中的使用,以及与MySQL数据库的集成。 ### 一、EJB实体Bean概述 EJB实体Bean是Java EE应用服务器管理的对象,它们负责处理数据存储和检索。实体Bean...

    Jboss下开发ejb应用之一实体bean的应用

    首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与数据库中的记录相对应,负责存储和检索数据。EJB 3.0引入了注解驱动的开发方式,大大简化了实体Bean的编程模型,使得开发者不再需要编写...

    EJB3.0实体的注解规范

    EJB3.0实体的注解规范主要涵盖了Java企业版(Java EE)中实体Bean的定义方式,这一规范也适用于Java Persistence API (JPA),并且整合了Hibernate的特有扩展。在EJB3.0中,实体Bean被设计为简单的Plain Old Java ...

    实战EJB之四 开发实体CMP(EJB 1.1规范) .doc

    【实战EJB之四 开发实体CMP(EJB 1.1规范)】 实体Bean(Entity Bean)在Java企业版(Java EE)中扮演着关键角色,它主要用于表示后端数据库中的持久化对象,比如数据库记录。在EJB 1.1规范中,实体Bean分为两种...

    实战EJB 实战EJB 实战EJB

    #### 五、实战EJB之四:开发实体Bean CMP(EJB1.1规范) **EJB1.1规范中的CMP** CMP (Container Managed Persistence) 是一种容器管理的持久化机制,用于简化实体Bean的数据存储过程。在EJB1.1规范中,CMP允许...

    EJB3开发Entity

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要负责处理业务逻辑。EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了许多简化和改进,使得开发更加高效且易于理解。本文将深入探讨EJB3中...

    JPA 批注参考 EJB3.0实体Bean注解详细解析

    // 实体类的字段和方法 } ``` 2. **@Table** - 用于指定实体映射到的数据库表的名称。如果省略,则默认使用类名。 3. **@Id** - 用于指定实体的主键字段。这个字段是唯一的,用于区分不同的实体实例。 4. **@...

    EJB实体Bean学习

    这个例子可能包含了EJB接口、实现类、实体类和相关的配置文件。通过阅读和分析这些文件,你可以更好地理解EJB实体Bean的工作原理和使用方法。 总之,EJB实体Bean是Java EE开发中的重要概念,它简化了服务器端应用...

    EJB 3.0学习之实体Bean

    例如,`@Entity`注解用于标记一个类作为实体Bean,表明这个类将代表数据库中的一个表。主键由`@Id`注解指定,它可以有多种生成策略,如TABLE、SEQUENCE、IDENTITY、AUTO和NONE,每种策略对应不同的主键生成方式。 ...

    EJB方面 ejb pdf

    理论上任何Java类都可能被视为一个Bean,但在实践中,JavaBean通常具备无参数构造函数,并实现了`Serializable`接口以支持持久化。JavaBean类似于COM模型中的本地进程内组件,不具备跨进程访问能力。 - **...

    ejb2.0与ejb3.0的区别

    开发者不再需要关注复杂的EJB接口和生命周期管理,而是通过注解和简单的配置文件即可完成实体类到数据库表的映射。 #### 三、部署描述符的变化 - **EJB 2.0**:要求显式定义部署描述符(Deployment Descriptors),...

    EJB3 PPT教程

    `@Entity`注解标记实体类,`@Table`定义映射的数据库表,`@Id`标识主键字段。此外,还有`@GeneratedValue`用于自动生成主键值。 **三、Message-Driven Bean(MDB)** MDB是EJB3中的消息驱动组件,主要用于处理JMS...

    JavaEE5学习笔记05-EJB之会话Bean总结

    2. **实现会话Bean类**:创建一个实现远程接口的类,并使用注解来指定其为EJB。 3. **部署并测试**:将EJB部署到应用服务器上,并编写客户端代码来测试会话Bean的功能。 #### 6. 结论 虽然随着微服务架构的流行,...

    EJB基础——类设计.rar_ejb_java ppt

    理解如何正确设计数据访问对象(DAO)和实体类对于确保数据一致性至关重要。 七、安全性 EJB提供了内置的安全机制,包括角色基线访问控制(Role-Based Access Control, RBAC)和方法级别的安全性。开发者可以通过@...

    Hibernate反向生成EJB注解

    在给定的场景下,我们讨论的是如何使用Hibernate反向工程生成包含EJB注解的实体类。 首先,我们需要创建一个Web项目,这是构建基于Java的Web应用程序的基础。在MyEclipse这样的集成开发环境中,可以方便地创建和...

    ejb+hibernate资料 ejb+hibernate资料

    `Hibernate 基础1.ppt`可能涵盖Hibernate的基本用法,如实体类的定义、属性注解、一对一、一对多、多对多的关联映射,以及如何通过Hibernate API进行CRUD操作(创建、读取、更新、删除)。此外,还可能介绍到HQL...

    EJB3.0之HelloWorld

    **EJB3.0之HelloWorld** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,主要用于构建可扩展、可移植和可信赖的企业级应用。EJB3.0是EJB规范的一个重要版本,它在之前的基础上进行了重大改进,...

    EJB3.0规范-EJB3.0 SPECIFICATION

    5. **实体Bean(Entity Beans)**:EJB3.0中的实体Bean主要基于JPA,使用`@Entity`注解标识,允许开发者直接操作数据库记录。实体Bean可以通过`@GeneratedValue`注解来自动分配主键。 6. **容器管理的事务...

    EJB学习大全(EJB3.0实例教程 JPA教程 实战EJB)

    1. **实体映射(Entity Mapping)**:如何使用注解或XML来定义实体类和数据库表之间的映射关系。 2. **查询语言(Query Language)**:JPA提供了JPQL(Java Persistence Query Language),一种类似SQL的查询语言,...

Global site tag (gtag.js) - Google Analytics