EJB3.0之实体Bean
广告投放★自助友情CMS落伍广告联盟晒乐广告联盟脉动广告联盟品味广告联盟
广告位可自定样式联系QQ:4285248个文字广告月20元广告联系QQ:428524广告位可自定样式
8个文字广告月20元黄金广告位每月20元广告位可自定样式联系QQ:428524广告位可自定样式
左旋肉碱、全国包邮
买二送一、无效退款

文章浏览→编程相关Mysql→EJB3.0之实体Bean

EJB3.0之实体Bean
EJB3.0之实体Bean

今天继续学习EJB3.0的实体Bean,那实体Bean到底有什么作用呢?实体Bean主要用于跟数据库打交道!

EJB 3.0开始,持久化已经自成规范,被称为Java Persistence API。

然后,刀哥又教给我们一个概念,那就是POJO的概念,那什么是POJO呢?其实我们所说的POJO就是简单的java对象!

废话不多说,首先是配置我们的数据源,数据源的配置是你的第一步!步骤如下:

每种数据库的数据源配置模版可以在[Jboss 安装目录]\docs\examples\jca 目录中找到,名称为:数据库名+-ds.xml
数据源部署前,必须把数据库驱动Jar 拷贝到[jboss 安装目录]/server/default/lib 目录.

可以在http://localhost:8080/jmx-console/查看到数据源的信息。

然后是配置我们的ds文件,配置如下:

<?xml version="1.0"encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>DefaultMySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/foshanshop?useUnicode=true&amp;character
Encoding=GBK</connection-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<!-- 最小连接数-->
<min-pool-size>3</min-pool-size>
<!-- 最大连接数-->
<max-pool-size>32</max-pool-size>
<!-- 抛出异常前最大的等待连接时间-->
<blocking-timeout-millis>30000</blocking-timeout-millis>
<!-- 关闭连接前连接空闲的最大时间-->
<idel-timeout-minutes>5</idel-timeout-minutes>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptio
nSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
接下来我们就可以书写我们的实体Bean了!

假如我们有如下的表:

 

字段名称
字段类型
描述
Persionid(主键)
Int(11) not null
人员 ID
Name
Varchar(32) not null
姓名
Sex
Tinyint(1) not null
性别
Age
Smallint(6) not nul
年龄
birthday

datetime null
出生日期

 

那么我们的实体Bean就可以这样写了:

1.我们的实体Bean都要实现serializable 接口

2.我们定义我们的属性:

@Entity --标示实体Bean
@Table(name="user") --对应那张数据库表
@SuppressWarnings("serial") --压制警告
public class UserBean implements Serializable {
 private int id;
 private String name;
 private int age;
 private String sex;
 private Date birthday;
 @Id  --标识id为主键
 @GeneratedValue(strategy=GenerationType.AUTO) --标识id自动增长
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 @Column(nullable=false,length=30) --标识非空长度是30
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 @Column(nullable=false)
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 @Column(nullable=false,length=20)
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 @Temporal(TemporalType.DATE) --标识是date类型
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }


}

正如我们所看到的,我们在EJB3.0中,使用了大量的注解,我们所要标识的属性全部在get方面上面标识。

这个时候,如果我们都配置的正确的话,我们在启动JBOSS服务器的时候,数据库就应该会自动的去建表!

然后,我们就可以书写我们的SessionBean了。

首先就是SessionBean的接口了,它定义了我们需要用的业务方法:

public interface PersonDAO {
public void insertPerson(Person person);
public void updateName(String newname, int personid);
public void mergePerson(Person person);
public void deletePerson(int personid);
public Person getPersonByID(int personid);
public List<Person>getPersonList();
}
然后我们的SessionBean闪亮登场!

@Stateless
@Remote (PersonDAO.class)
public class PersonDAOBean implements PersonDAO {
@PersistenceContext(unitName="foshanshop") protected EntityManagerem;  --这个EM对我们很是重要
public void insertPerson(Person person) {
em.persist(person);
}
public Person getPersonByID(int personid) {
return em.find(Person.class, personid);
}
public void mergePerson(Person person) {
em.merge(person);
}
然后是我们的 persistence.xml 配置文件 记得是在META-INF 下面的哦

<?xml version="1.0"?>
<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="foshanshop"transaction-type="JTA">
<jta-data-source>java:/DefaultMySqlDS</jta-data-source>--这个名字是我们的ds文件的前面的名字
<properties><!--下面属性只针对Jboss服务器-->
<property name="hibernate.hbm2ddl.auto"value="create-drop"/>--这里所说的就是如果没有表我们就create一个,如过有的话删掉,重新建立一个,我们一般用的是update
<!-- 调整JDBC抓取数量的大小: Statement.setFetchSize()-->
<property name="hibernate.jdbc.fetch_size"value="18"/>
<!-- 调整JDBC批量更新数量-->
<property name="hibernate.jdbc.batch_size"value="10"/>
<!-- 显示最终执行的SQL -->
<property name="hibernate.show_sql"value="true"/>
<!-- 格式化显示的SQL -->
<property name="hibernate.format_sql"value="true"/>
</properties>
</persistence-unit>
</persistence>

到此为止,我们的服务器端就写完了!

测试方法跟以前的一样,代码如下:

Properties p = new Properties();
  p.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
  p.setProperty("java.naming.provider.url","localhost:1099");
  InitialContext ctx = newInitialContext(p);
  MySessionBeanInter mybean =(MySessionBeanInter) ctx.lookup("MySessionBean/remote");
  MyBean newperson = newMyBean();
  newperson.setName("实施");
  newperson.setAge(28);
  newperson.setSex("男");
  newperson.setBrithday(newDate());
  mybean.insertPerson(newperson);最后就添加成功

所属分类:编程相关Mysql    作者:新浪博客    时间:2010-11-20 0:00:00

文章导航