`
xiaocong1001
  • 浏览: 5712 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ejb3.0--4

阅读更多
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;
		
	}
}


2
0
分享到:
评论

相关推荐

    ejb-api-3.0-sources

    ejb-api-3.0-sources ejb3.0资源文件,源代码文件

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    EJB3.0规范-EJB3.0 SPECIFICATION

    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,jar包下载,依赖包

    agent-ejb-3.0-beta-1-sources.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,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,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包

    EJB3.0规范和API文档

    **EJB 3.0规范和API文档** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。EJB 3.0是EJB规范的一个重大更新,极大地简化了开发...

    EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展

    ### EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展 #### 一、概述 EJB3.0引入了一种新的编程模型,它基于Java Persistence API (JPA),使得开发人员能够更加轻松地创建企业级应用。JPA允许使用POJO(Plain Old...

    ejb3.0开发规范PDF

    EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要标准,它定义了如何在Java EE(Java Platform, Enterprise Edition)环境中构建可复用的、组件化的服务器端应用程序。EJB 3.0的发布极大地简化了EJB的...

    ejb3.0开发实例(java工程)

    在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...

    EJB 3.0规范官方文档

    4. **查询语言(JPA & JPQL)**:EJB 3.0引入了Java Persistence API(JPA),其中包含Java Persistence Query Language(JPQL),这是一种面向对象的查询语言,用于从数据库检索和操作实体Bean。 5. **依赖注入...

    传智播客ejb3.0教学ppt

    - **书籍推荐**:《EJB3.0入门经典》,该书详细介绍了EJB 3.0的核心概念和技术要点,适合初学者入门。 - **电子资源**:《EJB3.0实例教程》免费电子版,提供了大量的实战案例和示例代码,有助于加深理解。 #### 九...

    EJB3.0 - 学习笔记

    EJB(Enterprise JavaBeans)3.0 是一种用于构建分布式企业级应用程序的组件模型,它在Java平台上提供了标准的服务端组件。EJB架构确保了应用的可伸缩性、事务性和多用户安全性,使得开发者能够构建可靠且强大的业务...

    EJB3.0API.rar_ejb_ejb3.0a_ejb3.0api

    压缩包中的文件如“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 pdf

    《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...

    ejb2.0与ejb3.0的区别

    ### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...

Global site tag (gtag.js) - Google Analytics