ejb中的EntityBean例子

前面一节介绍了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());
		}
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值