エンティティ定義

estoc.dbではアノテーションを使用してテーブル構造を定義します

・テーブル名の指定

@Table( table_name )でエンティティクラスを定義します

・カラムの指定

フィールドに@Columnでテーブルカラムを指定します

フィールド名とカラム名は同一とします

フィールドはpublicでも、privateでGetter/Setterを用意する形でも構いません

publicなGetter/Setterがあれば、それを利用してデータの授受を行います。 Getter/Setterが無い場合、フィールドがpublicであれば直接データをセットします。 それ以外の場合、実行時にエラー(Exception)となります。

@Columnにはパラメーターを設定し、サイズを指定することができます(できない型もある)

フィールドとして使用できる型は以下の通りです

| 型名(Java) | param1 | param2 | H2での型    | Derbyでの型                 |
--------------------------------------------------------------------------------------
|String      |  省略  |  省略  |VARCHAR      |VARCHAR(125)
|            |   N    |  省略  |VARCHAR(N)   |VARCHAR(N)
|Integer     |  省略  |  省略  |INT          |INTEGER
|byte[]      |  省略  |  省略  |VARBINARY    |VARCHAR (125) FOR BIT DATA
|            |   N    |  省略  |BINARY(N)    |VARCHAR (N) FOR BIT DATA
|Date        |  省略  |  省略  |TIMESTAMP    |TIMESTAMP
|Boolean     |  省略  |  省略  |BOOLEAN      |サポートしない
|Double      |  省略  |  省略  |DOUBLE       |DOUBLE
|BigDecimal  |  省略  |  省略  |DECIMAL(10,0)|DECIMAL(10,0)
|            |   N    |  省略  |DECIMAL(N,0) |DECIMAL(N,0)
|            |   N    |   M    |DECIMAL(N,M) |DECIMAL(N,M)

@Columnに続けてアノテーションで絡む属性を指定することができます

アノテーションで指定できるカラム属性は以下の通りです+

@Pk

PK。複数のカラムにつけることができます。

@NotNull

NN。複数のカラムにつけることができます。

@AutoInc

自動発番されるカラムです。

@Unique

Unique属性を指定します。複数のカラムを関連して指定することはできません。

@Index

インデックスを作成します。複数のカラムを関連して指定することはできません。

@TimeStamp

レコード更新日時を記録するカラムであることを指定します。このカラムはDate型でなければいけません。 Insert,Updateの際に自動で現在日時がセットされます

sample

  1. import java.util.Date;
  2. import estoc.dbm.annotate.*;
  3. @Table("book_info")
  4. public class TblBook {
  5. @Column @Pk @AutoInc
  6. public Integer id;
  7. @Column(24) @NotNull @Index
  8. public String isbn;
  9. @Column
  10. public String author;
  11. @Column
  12. public Integer price;
  13. @Column
  14. public byte[] image;
  15. @Column @TimeStamp
  16. public Date update_date;
  17. }
またはprivateメンバ+ getter/setter でも定義できます
  1. @Table("book_info")
  2. public class TblBook {
  3. @Column @Pk @AutoInc
  4. private Integer id;
  5. @Column(24) @NotNull @Index
  6. private String isbn;
  7. @Column
  8. private String author;
  9. @Column
  10. private Integer price;
  11. @Column
  12. private byte[] image;
  13. @Column @TimeStamp
  14. private Date update_date;
  15. public Integer getId() {
  16. return id;
  17. }
  18. public void setId(Integer id) {
  19. this.id = id;
  20. }
  21. public String getIsbn() {
  22. return isbn;
  23. }
  24. public void setIsbn(String isbn) {
  25. this.isbn = isbn;
  26. }
  27. public String getAuthor() {
  28. return author;
  29. }
  30. public void setAuthor(String author) {
  31. this.author = author;
  32. }
  33. public Integer getPrice() {
  34. return price;
  35. }
  36. public void setPrice(Integer price) {
  37. this.price = price;
  38. }
  39. public byte[] getImage() {
  40. return image;
  41. }
  42. public void setImage(byte[] image) {
  43. this.image = image;
  44. }
  45. public Date getUpdate_date() {
  46. return update_date;
  47. }
  48. public void setUpdate_date(Date update_date) {
  49. this.update_date = update_date;
  50. }
  51. }