JavaEE5学习笔记08-JPA与EJB集成总结(1)

JPAJavaEE5提出的一套标准接口,不同的应用服务器对其实现采用不同的框架。JBoss不用说底层采用的肯定就是HibernateHibernateJBoos社区的开源产品),一提到Hibernate就不用多说了,ORM思想的推广与盛行,可以说大部分都是Hibernate的功劳。面向对象数据库没稳定前,笔者觉得它还是OR-Mapping的霸主(当然ibatis也有它的适用场景,因项目而定)。到EJB3.0的标准抛弃了以前的实体Bean的概念,吸收了ORM思想的优势,推出了JPA的标准。至于JPA的笔记在笔者前面的Blog()中已经单独作为一个技术做了学习笔记。这里只是对EJB+JPA集成起来作为总结。

1.       JPA配置元文件persistence.xml

在项目src/META-INF/增加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="JavaEE4JbossPU"

       transaction-type="JTA">

       <jta-data-source>java:/jbossdemo</jta-data-source>

       <class>jpa.vo.Person</class>

    </persistence-unit>

</persistence>

注意:因为考虑到项目运行时环境移植的问题,虽然在此时知道JBoss底层使用了Hibernate框架作为JPA的实现,但是这个配置文件也没写出一些Hibernate特殊属性的配置,比如:hibernate.show_sqlhibernate.dialecthibernate.format_sql等等。在此处,指定了持久化单元名JavaEE4JbossPU,事务类型采用JTA(至于是容器级JTA还是代码级JTA之后看SessionBean的时候再说),制定一个数据源,此处是用JNDI名指代一个数据源名称。

2.       根据数据库表建立实体对象

数据库表结构DDL如下:

CREATE TABLE `person` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;

根据此表实体对象代码如下:

package jpa.vo;

 

@Entity

@Table(name = "person")

public class Person implements java.io.Serializable {

    // Fields

    /**

     *

     */

    private static final long serialVersionUID = 7441495112741073549L;

    private Integer id;

    private String name;

 

    // Constructors

    /** default constructor */

    public Person() {

    }

 

    /** full constructor */

    public Person(String name) {

       this.name = name;

    }

 

    // Property accessors

    @Id

    @GeneratedValue(strategy = IDENTITY)

    @Column(name = "id", unique = true, nullable = false)

    public Integer getId() {

       return this.id;

    }

 

    public void setId(Integer id) {

       this.id = id;

    }

 

    @Column(name = "name")

    public String getName() {

       return this.name;

    }

 

    public void setName(String name) {

       this.name = name;

    }

}

具体的注解在此就不做解释了。

你可能感兴趣的:(Hibernate,jboss,ibatis,jpa,ejb)