6实体 Bean(Entity Bean)

rel="File-List" href="file:///C:%5CDOCUME%7E1%5Chly%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Chly%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso">

6实体 Bean(Entity Bean)

 

实体 Bean发布前的准备工作

1.  把数据库驱动 Jar 包放置在[Jboss 安装目录]/server/all/lib 目录下,重启 Jboss服务器

2.  配置数据源(mysql-ds.xml)并放置在[jboss 安装目录]/server/all/deploy 目录,

3.  配置 persistence.xml文件,在文件中指定使用的源据源及各项参数。把实体类和 persistence.xml文件打成 Jarpersistence.xml 放在 jar 文件的 META-INF目录


完。

 


不确定内容参考以下:

MySql 数据源

下面定义一个名为DefaultMySqlDS Mysql 数据源,连接数据库为foshanshop,数据库登录用户名为 root,密码

123456,数据库驱动类为 org.gjt.mm.mysql.Driver。大家只需修改数据库名及登录用户名密码就可以直接使用。 

mysql-ds.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <datasources>
  3.     <local-tx-datasource>
  4.        <jndi-name>DefaultMySqlDS</jndi-name>
  5.   <connection-url>jdbc:mysql://localhost:3306/foshanshop?useUnicode=true&characterEncoding=GBK
  6.   </connection-url>
  7.        <driver-class>org.gjt.mm.mysql.Driver</driver-class>
  8.        <user-name>root</user-name>
  9.   <password>123456</password>
  10.        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
  11.   </exception-sorter-class-name>
  12.        <metadata>
  13.             <type-mapping>mySQL</type-mapping>
  14.        </metadata>
  15.     </local-tx-datasource>
  16.  
  17. </datasources>

 

persistence.xml文件

一个实体 Bean由实体类和persistence.xml文件组成。persistence.xml文件在 Jar 文件的 META-INF目录。

persistence.xml文件指定实体 Bean使用的数据源及 EntityManager 对象的默认行为。persistence.xml 文件的配置说

明如下:

  1. <persistence>
  2.    <persistence-unit name="foshanshop">
  3.        <jta-data-source>java:/DefaultMySqlDS</jta-data-source>
  4.        <properties>
  5.           <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
  6.        </properties>
  7.    </persistence-unit>
  8. </persistence>

○实体 Bean(Entity Bean)


  1. package com.foshanshop.ejb3.bean;
  2.  
  3. import java.io.Serializable;
  4. import java.util.Date;
  5.  
  6. import javax.persistence.Column;
  7. import javax.persistence.Entity;
  8. import javax.persistence.GeneratedValue;
  9. import javax.persistence.Id;
  10. import javax.persistence.Table;
  11. import javax.persistence.Temporal;
  12. import javax.persistence.TemporalType;
  13. import javax.persistence.GenerationType;
  14.  
  15. @SuppressWarnings("serial")
  16. @Entity
  17. @Table(name = "Person")
  18. public class Person implements Serializable{
  19.  
  20.     private Integer personid;
  21.     private String name;   
  22.     private boolean sex;
  23.     private Short age;
  24.     private Date birthday;
  25.  
  26.     @Id
  27.     @GeneratedValue(strategy=GenerationType.AUTO)
  28.     public Integer getPersonid() {
  29.         return personid;
  30.     }
  31.     public void setPersonid(Integer personid) {
  32.         this.personid = personid;
  33.     }
  34.    
  35.     @Column(nullable=false,length=32)
  36.     public String getName() {
  37.         return name;
  38.     }
  39.     public void setName(String name) {
  40.         this.name = name;
  41.     }
  42.    
  43.     @Column(nullable=false)
  44.     public boolean getSex() {
  45.         return sex;
  46.     }
  47.     public void setSex(boolean sex) {
  48.         this.sex = sex;
  49.     }
  50.    
  51.     @Column(nullable=false)  
  52.     public Short getAge() {
  53.         return age;
  54.     }
  55.     public void setAge(Short age) {
  56.         this.age = age;
  57.     }
  58.    
  59.     @Temporal(value=TemporalType.DATE)
  60.     public Date getBirthday() {
  61.         return birthday;
  62.     }
  63.    
  64.     public void setBirthday(Date birthday) {
  65.         this.birthday = birthday;
  66.     }
  67. }

 

Session BeanSession Bean  的业务接口 Session Bean的实现)

PersonDAO.java

  1. //author:lihuoming
  2. package com.foshanshop.ejb3;
  3. import java.util.Date;
  4. import java.util.List;
  5. import com.foshanshop.ejb3.bean.Person;
  6.  
  7. public interface PersonDAO {
  8.     
  9.     public boolean insertPerson(String name, boolean sex,short age, Date birthday);
  10.     public String getPersonNameByID(int personid);
  11.     public boolean updatePerson(Person person);
  12.     public Person getPersonByID(int personid);
  13.     public List getPersonList(int max,int whichpage);

 

PersonDAOBean.java

  1. //author:lihuoming
  2. package com.foshanshop.ejb3.impl;
  3. import java.util.Date;
  4. import java.util.List;
  5. import javax.ejb.Remote;
  6. import javax.ejb.Stateless;
  7. import javax.persistence.EntityManager;
  8. import javax.persistence.PersistenceContext;
  9. import javax.persistence.Query;
  10. import com.foshanshop.ejb3.PersonDAO;
  11. import com.foshanshop.ejb3.bean.Person;
  12.  
  13. @Stateless
  14. @Remote ({PersonDAO.class})
  15. public class PersonDAOBean implements PersonDAO {
  16.  
  17.     @PersistenceContext
  18.     protected EntityManager em;
  19.  
  20.     public String getPersonNameByID(int personid) {
  21.         Person person = em.find(Person.class, Integer.valueOf(personid));
  22.         return person.getName();
  23.     }
  24.  
  25.     public boolean insertPerson(String name, boolean sex,short age, Date birthday) {
  26.         try {
  27.             Person person = new Person();
  28.             person.setName(name);
  29.             person.setSex(sex);
  30.             person.setAge(Short.valueOf(age));
  31.             person.setBirthday(birthday);
  32.             em.persist(person);
  33.         } catch (Exception e) {
  34.             e.printStackTrace();
  35.             return false;
  36.         } 
  37.         return true;
  38.     }
  39.  
  40.     public Person getPersonByID(int personid) {       
  41.         return em.find(Person.class, Integer.valueOf(personid));
  42.     }
  43.     
  44.     public boolean updatePerson(Person person) {
  45.         try {
  46.             em.merge(person);
  47.         } catch (Exception e) {
  48.             e.printStackTrace();
  49.             return false;
  50.        } 
  51.         return true;
  52.     }
  53.     
  54.     public List getPersonList(int max,int whichpage) {
  55.         try {
  56.             int index = (whichpage-1) * max;
  57.             Query query = em.createQuery("from Person p order by personid asc");
  58.             List list = query.setMaxResults(max).
  59.                                 setFirstResult(index).
  60.                                 getResultList();
  61.             em.clear();//分离内存中受EntityManager管理的实体bean,让VM进行垃圾回收
  62.             return list;
  63.             
  64.         } catch (Exception e) {
  65.             e.printStackTrace();
  66.             return null;
  67.         }         
  68.     } 
  69. }

 

○下面是 JSP 客户端代码:

EntityBeanTest.jsp

  1. <%@ page contentType="text/html; charset=GBK"%>
  2. <%@ page import="com.foshanshop.ejb3.PersonDAO, 
  3.         com.foshanshop.ejb3.bean.Person,
  4.         javax.naming.*, 
  5.         java.util.Properties, 
  6.         java.util.Date,
  7.         java.util.List,
  8.         java.util.Iterator,
  9.         java.text.SimpleDateFormat"%>
  10. <%
  11.     Properties props = new Properties();
  12.     props.setProperty("java.naming.factory.initial",
  13. "org.jnp.interfaces.NamingContextFactory");
  14.     props.setProperty("java.naming.provider.url""localhost:1099");
  15.     props.setProperty("java.naming.factory.url.pkgs""org.jboss.naming"); 
  16.  
  17.     InitialContext ctx = new InitialContext(props);
  18.     try {     
  19.         PersonDAO persondao = (PersonDAO) ctx.lookup("PersonDAOBean/remote");
  20.       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");     
  21.       persondao.insertPerson("黎活明"true, (short)26,formatter.parse("1980-9-30"));//添加一个人
  22.       out.println(persondao.getPersonNameByID(1)); //取personid为1的人姓名
  23.  
  24.       Person person = persondao.getPersonByID(1); //取personid为1的person,此时的person已经脱离容器的管理
  25.       person.setName("张小艳"); //把姓名改为张小艳
  26.       persondao.updatePerson(person); //更新person 
  27.       out.println("<br> personid为1的person姓名已由黎活明改为 张小艳");
  28.  
  29.       out.println("<br>============  分页显示,每页记录数为2 =========<BR>");
  30.  
  31.       String index = request.getParameter("index");
  32.       if (index==null || "".equals(index.trim())) index = "1";
  33.  
  34.       int max = 2//每页记录数为2
  35.       int whichpage = Integer.parseInt(index); //第几页
  36.       List list = persondao.getPersonList(max, whichpage);
  37.       if (list!=null){
  38.         Iterator it = list.iterator();
  39.         while (it.hasNext()) {
  40.           Person p = (Person)it.next();
  41.           out.println("人员编号:"+ p.getPersonid() + " 姓名:"+ p.getName() + "<Br>");
  42.         }
  43.       }
  44.     } catch (Exception e) {
  45.       out.println(e.getMessage());
  46.     }
  47. %> 

上面代码往数据库添加一个人,然后取 personid 1 的人员姓名。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值