1,创建jboss数据源,mysql-ds.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- $Id: mysql-ds.xml,v 1.3.2.3 2006/02/07 14:23:00 acoliver Exp $ -->
<!-- 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>chenzhq_mysql</jndi-name>
<connection-url>jdbc:mysql://192.168.40.10:3306/school</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</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>
2.编写persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistences>
<persistence-unit name="student">
<!--
<jta-data-source>java:chenzhq_oracle_datasource</jta-data-source>
<class>com.chenzhq.ejb.entity.Student</class>
-->
<jta-data-source>java:/chenzhq_mysql</jta-data-source>
<class>com.chenzhq.ejb.entity.Student</class>
</persistence-unit>
</persistences>
3.写个Entity-bean
package com.chenzhq.ejb.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity//Entity标记声明student是个实体bean
@Table (name="student")//for mysql 注册映射表为student
//@Table (name="test.student")//for oracle
public class Student implements Serializable {//注意必须实现可序列化,否则在你调用Remote接口的时候就会报错。
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String sex;
private String classes;
private int points;
@Column (name="classes")//映射到classes列
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
@Id//声明student的主键
//@GeneratedValue
@Column (name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column (name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column (name="points")
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
@Column (name="sex")
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
4,在写个sessionbean调用处理实体bean,ejb3.0中entitybean就像个pojo
package com.chenzhq.ejb.session;
import javax.ejb.Init;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import com.chenzhq.ejb.entity.Student;
@Stateful
@Remote ({ProcessStudentRemote.class})
@Local ({ProcessStudentLocal.class})
public class ProcessStudent implements ProcessStudentLocal,ProcessStudentRemote {
//@PersistenceUnit (unitName="student") private static EntityManagerFactory emf;
/* 这里面的大多数方法是我简化写的,只是提及一下,深入了解的化买本书吧!
* //获得对实体bean的上下文引用,unitName对应这Persistence.xml中的uintName
* type可以是EXTEND,或是TRANSACTION,EXTEND的相对与TRANSACTION的生存的时间长
*
*
*/
@PersistenceContext (unitName="student",type=PersistenceContextType.EXTENDED)
private static EntityManagerFactory emf;
private static EntityManager em;
@Init
public void init(){
System.out.println(emf);
}
public boolean createStudent(Student s){
System.out.println(s);
em = emf.createEntityManager();
/*
* 如果你的EntityManager是使用EntityManagerFactoty生成的,那么joinTransaction是必须的
*
*/
em.joinTransaction();
em.setFlushMode(FlushModeType.COMMIT);
System.out.println(em.toString().toUpperCase());
if(em.isOpen()){
//em.merge(s);
em.persist(s);//持久化一个student
em.flush();
}else{
throw new RuntimeException("the entity manager is closed");
}
return true;
}
public boolean queryStudent(Object o){
em = emf.createEntityManager();
em.joinTransaction();
em.setFlushMode(FlushModeType.COMMIT);
System.out.println(em.toString().toUpperCase());
System.out.println(em.find(Student.class, o).getId());
try{
/*
* find和reference的区别再用,如果没有发现find返回null,而reference出现异常。
*/
Student s = em.getReference(Student.class, o);
System.out.print(s.getName());
}catch(Exception e){
e.printStackTrace();
}
return true;
}
public boolean removeStudent(Object o){
em = emf.createEntityManager();
em.joinTransaction();
em.setFlushMode(FlushModeType.COMMIT);
System.out.println(em.toString().toUpperCase());
Student s = em.find(Student.class, o);
em.remove(s);
em.flush();
em.clear();
return true;
}
public boolean updateStudent(String name,Object o){
em = emf.createEntityManager();
em.joinTransaction();
em.setFlushMode(FlushModeType.COMMIT);
System.out.println(em.toString().toUpperCase());
Student s = em.find(Student.class, o);
/*
* 因为是managed的Bean所以容器会将改变的bean同步到database的。
*/
s.setName(name);
return true;
}
}
分享到:
相关推荐
ejb-api-3.0-sources ejb3.0资源文件,源代码文件
《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...
EJB3.0规范是Java EE 5中的一个重要组成部分,它对之前的EJB版本进行了重大改进,极大地简化了开发流程,降低了EJB的使用门槛。 EJB3.0规范引入了许多关键特性,使得企业级开发变得更加高效和直观: 1. **注解驱动...
标签:agent-ejb-3.0-beta-1.jar,agent,ejb,3.0,beta,1,jar包下载,依赖包
标签:agent-ejb-3.0-beta-1-sources.jar,agent,ejb,3.0,beta,1,sources,jar包下载,依赖包
标签:agent-ejb-3.0-beta-1-javadoc.jar,agent,ejb,3.0,beta,1,javadoc,jar包下载,依赖包
标签:agent-car-ejb-3.0-beta-1-sources.jar,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包
**EJB 3.0规范和API文档** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。EJB 3.0是EJB规范的一个重大更新,极大地简化了开发...
### EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展 #### 一、概述 EJB3.0引入了一种新的编程模型,它基于Java Persistence API (JPA),使得开发人员能够更加轻松地创建企业级应用。JPA允许使用POJO(Plain Old...
EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要标准,它定义了如何在Java EE(Java Platform, Enterprise Edition)环境中构建可复用的、组件化的服务器端应用程序。EJB 3.0的发布极大地简化了EJB的...
在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...
4. **查询语言(JPA & JPQL)**:EJB 3.0引入了Java Persistence API(JPA),其中包含Java Persistence Query Language(JPQL),这是一种面向对象的查询语言,用于从数据库检索和操作实体Bean。 5. **依赖注入...
- **书籍推荐**:《EJB3.0入门经典》,该书详细介绍了EJB 3.0的核心概念和技术要点,适合初学者入门。 - **电子资源**:《EJB3.0实例教程》免费电子版,提供了大量的实战案例和示例代码,有助于加深理解。 #### 九...
EJB(Enterprise JavaBeans)3.0 是一种用于构建分布式企业级应用程序的组件模型,它在Java平台上提供了标准的服务端组件。EJB架构确保了应用的可伸缩性、事务性和多用户安全性,使得开发者能够构建可靠且强大的业务...
压缩包中的文件如“ejb-3_0-fr-spec-persistence.pdf”、“ejb-3_0-fr-spec-simplified.pdf”和“ejb-3_0-fr-spec-ejbcore.pdf”可能是EJB 3.0官方规范的文档,分别详细阐述了持久化、简化的规范和核心EJB 3.0的内容...
《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...
### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...