[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12142] Re: JDK5 + JBoss4.0.3SP1 + JBoss-EJB3(RC3) で EJB3 の手順



  高橋(智)です。
  
  EntityBeanを使い倒されている方もいらっしゃるようですし、簡単ついでに、
EntityBeanを使用するコードを記述してみました。(^^)

  デプロイして、EJBクライアントを実行すると、RDBMSのログファイルには、
以下のようなSQL文が残されていました。
----------------------------------------------------------------------------
create table OrderTable (Col_Id integer not null, Col_Custname varchar(255),
                         primary key (Col_Id), unique (Col_Id))

SET AUTOCOMMIT FALSE
INSERT INTO ORDERTABLE VALUES(1,'ken')
COMMIT
----------------------------------------------------------------------------
  永続化のDataSource先を指定しようとしたのですが、うまく行かず、デフォルト
のものが勝手に使用されてしまいました。また、EntityBeanのソースコードに色々
なAnnotationが記述されているおかげで、可読性や保守性が損なわれるような気が
するのは私だけでしょうか? (^^;
  いずれも配布ディスクリプタ(.xml)で別途指定することができるとは思うのですが、
詳しいことは分かりません。(^^;

=======================================================================
package test;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Id;

//create table OrderTable (Col_Id integer not null, Col_Custname varchar(255),
//                         primary key (Col_Id), unique (Col_Id))
@Entity
@Table(name="OrderTable")
public class Order implements java.io.Serializable {
  private int id;
  private String custname;

  public Order() {
  }

  public Order(int id, String custname) {
    this.id = id;
    this.custname = custname;
  }

  @Id
  @Column(name="Col_Id", unique=true, nullable=false, updatable=false)
  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  @Column(name="Col_Custname", unique=false, nullable=true, updatable=true)
  public String getCustname() {
    return custname;
  }

  public void setCustname(String custname) {
    this.custname = custname;
  }
}
=======================================================================

=======================================================================
package test;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class EchoBean implements EchoRemote
{
  @PersistenceContext
  private EntityManager manager;

  public EchoBean() {
  }

  public String echo(String msg) {
    //SET AUTOCOMMIT FALSE
    //INSERT INTO ORDERTABLE VALUES(1,'ken')
    //COMMIT
    Order order = new Order(1, msg);
    manager.persist(order);

    return msg;
  }
}
=======================================================================

--
高橋智宏