myeclips8+jboss5+mysql5配置测试实体bean

来源:互联网 发布:淘宝联盟官网下载 编辑:程序博客网 时间:2024/05/18 12:41

最后的目录层次结构:

mysql数据库结构:

按目录层次,给出各个类文件:

Person.java:(此为

package com.ejb;import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table;  @SuppressWarnings("serial") @Entity @Table(name = "Person") public class Person implements Serializable{      private Integer personid;     private String name;         private boolean sex;     private Short age;     private Date birthday;        @Id     @GeneratedValue        public Integer getPersonid() {         return personid;     }     public void setPersonid(Integer personid) {         this.personid = personid;     }           @Column(name = "PersonName",nullable=false,length=32)     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }          @Column(nullable=false)     public boolean getSex() {         return sex;     }     public void setSex(boolean sex) {         this.sex = sex;     }          @Column(nullable=false)        public Short getAge() {         return age;     }     public void setAge(Short age) {         this.age = age;     }           public Date getBirthday() {         return birthday;     }     public void setBirthday(Date birthday) {         this.birthday = birthday;     }    }


PersonDAO.java:

package com.session;import java.util.Date; import java.util.List; import com.ejb.Person;  public interface PersonDAO {          public boolean insertPerson(String name, boolean sex,short age, Date birthday);     public String getPersonNameByID(int personid);     public boolean updatePerson(Person person);     public Person getPersonByID(int personid);     public List getPersonList(); } 


PersonDAOBean.java:(此为,用于测试实体bean)

package com.session;import java.util.Date; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import com.session.PersonDAO; import com.ejb.Person;  @Stateless @Remote ({PersonDAO.class}) public class PersonDAOBean implements PersonDAO {      @PersistenceContext     protected EntityManager em;      public String getPersonNameByID(int personid) {         Person person = em.find(Person.class, Integer.valueOf(personid));         return person.getName();     }         public boolean insertPerson(String name, boolean sex,short age, Date birthday) {        try {             Person person = new Person();             person.setName(name);             person.setSex(sex);             person.setAge(Short.valueOf(age));             person.setBirthday(birthday);             em.persist(person);         } catch (Exception e) {             e.printStackTrace();             return false;         }          return true;     }      public Person getPersonByID(int personid) {                return em.find(Person.class, Integer.valueOf(personid));     }          public boolean updatePerson(Person person) {         try {             em.merge(person);         } catch (Exception e) {             e.printStackTrace();             return false;         }          return true;     }          public List getPersonList() {         try {             Query query = em.createQuery("from Person p order by personid asc");             List list = query. getResultList();             em.clear();//分离内存中受EntityManager管理的实体bean,让VM进行垃圾回收             return list;                      } catch (Exception e) {             e.printStackTrace();             return null;         }     }  } 

 

然后创建一个web项目EntityBeanTest,在默认路径建一个jsp测试文件Test.jsp:


             

Test.jsp:

<%@ page contentType="text/html; charset=GBK"%> <%@ page import="com.session.*,          com.ejb.*,         javax.naming.*,          java.util.Properties,          java.util.Date,         java.util.List,         java.util.Iterator,         java.text.SimpleDateFormat"%> <%     Properties props = new Properties();     props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");     props.setProperty("java.naming.provider.url", "localhost:1099");     props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");       InitialContext ctx = new InitialContext(props);     try {            PersonDAO persondao = (PersonDAO) ctx.lookup("PersonDAOBean/remote");       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");            persondao.insertPerson("刘宽", true, (short)26,formatter.parse("1980-9-30"));//添加一个人       out.println(persondao.getPersonNameByID(1)); //取personid为1的人姓名        Person person = persondao.getPersonByID(1); //取personid为1的person,此时的person已经脱离容器的管理       person.setName("张小艳"); //把姓名改为张小艳       persondao.updatePerson(person); //更新person        out.println("<br> personid为1的person姓名已由“刘宽”改为“张小艳”<br>");       List list = persondao.getPersonList(); //分页结果集      if (list!=null){         Iterator it = list.iterator();         while (it.hasNext()) {           Person p = (Person)it.next();           out.println("人员编号:"+ p.getPersonid() + "\t姓名:"+ p.getName() + "<Br>");         }       }     } catch (Exception e) {       out.println(e.getMessage());     } %> 


结出persistence.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="entityPU" transaction-type="JTA">  <jta-data-source>java:/MySqlDS</jta-data-source></persistence-unit>  </persistence>


 

最后,发布ejb和web项目,在地址栏输入:http://localhost:8080/EntityBeanTest/Test.jsp

在网页下的输出结果如下:

张小艳
personid 为1的person姓名已由“刘宽”改为“张小艳”
人员编号:1 姓名:张小艳

 

本人亲测可行!至于其他平台和不同版本的情况下可能会有问题,欢迎探讨!

原创粉丝点击