fhuan123 发表于 2013-2-3 14:39:00

在Java SE环境下使用JPA1.0(1)

一、搭建环境
1)   搭建数据库环境   1、安装数据库(MySQL 5.0.24), 用户: root,密码: (空) 。
   2、建库piscesdb。
   3、建表address:
drop table address;create table address (   addressID int not null,   city varchar(55) not null,   street varchar(55) NOT NULL,   zip varchar(8) NOT NULL,   PRIMARY KEY(addressID));insert into address values (1, "深圳", "坂田市场", "518001");insert into address values (2, "深圳", "坂田路口", "518002");insert into address values (3, "深圳", "四季花城", "518003");
4、建表userinfo:
droptable userinfo;createtable userinfo (   userID intnotnull,/** 用户id*/   username varchar(20) notnull, /** 姓名*/   birthday datetimenull,   /**出生日期*/   sex varchar(8) notnull,   /** 性别 */   addressID intnotnull,    /** 地址id*/   PRIMARYKEY (userID));insertinto userinfo values (1, "张金雄", null, "male", 1);insertinto userinfo values (2, "李某某", null, "male", 2);insertinto userinfo values (3, "王某某", '2006-08-10', "female", 3);insertinto userinfo values (4, "陈某某", '2006-08-12', "male", 3);
2)   获取额外的jar包    下载JPA的实现类, 去https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html下载GlassFish v1 FCS branch版本,
进行安装后得到toplink-essentials.jar,toplink-essentials-agent.jar 两个包,将这两个包和mysql的驱动包加入到项目的classpath路径中去。

3)   开发环境JDK:jdk 6.0 beta2 (JDK 5.0 也可以)
   IDE:NetBeans 5.0 中文版

二、开发1)   创建实体Entity类   1、地址类 Address :
/** Address.java*/package org.pisces.persist;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;/**** @author kamhung*/@Entity publicclass Address implements Serializable {    //地址id, 不能为空, 必须唯一    @Id   @Column(name ="addressid", unique=true, nullable=false)    privateint addressid;      //城市, 不能为空    @Column(name ="city", nullable=false)    private String city;      //街道, 不能为空    @Column(name ="street", nullable=false)    private String street;      //邮政编码, 不能为空    @Column(name ="zip", nullable=false)    private String zip;      public Address() {    }      public Address(int addressid) {      this.setAddressid(addressid);    }      publicint getAddressid() {      returnthis.addressid;    }      publicvoid setAddressid(int addressid) {      this.addressid = addressid;    }      public String getCity() {      returnthis.city;    }      publicvoid setCity(String city) {      this.city = city;    }      public String getStreet() {      return street;    }      publicvoid setStreet(String street) {      this.street = street;    }      public String getZip() {      returnthis.zip;    }      publicvoid setZip(String zip) {      this.zip = zip;    }      @Override    publicint hashCode() {      returnthis.addressid;    }      @Override    publicboolean equals(Object object) {      if (!(object instanceof Address)) returnfalse;      final Address other = (Address)object;      returnthis.addressid == other.addressid;    }      @Override    public String toString() {      return"Address[addressid="+ getAddressid() +", city='"+ getCity() +"', street='"+ getStreet() +"', zip='"+ getZip() +"";    }}2、用户类 UserInfo: /** UserInfo2.java*/package org.pisces.persist;import java.io.Serializable;import java.sql.Timestamp;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;importstatic javax.persistence.CascadeType.*;/**** @author kamhung*/@Entity publicclass UserInfo implements Serializable {    //用户id, 不能为空, 必须唯一    @Id   @Column(name ="userid", unique=true, nullable=false)    privateint userid;      //用户名, 不能为空    @Column(name ="userName", nullable=false)    private String userName;      //性别, 不能为空    @Column(name ="sex", nullable=false)    private String sex;      //出生日期, 可以为空    @Column(name ="birthday")    private Timestamp birthday;      //地址, 不能为空    //PERSIST 表示更新、新增UserInfo数据时会同时更新、新增Address的数据    //REMOVE 表示从数据库删除UserInfo会同时删除Address表中对应的数据    @OneToOne(cascade={PERSIST, REMOVE})    @JoinColumn(name ="addressID", nullable=false)    private Address address;      public UserInfo() {    }      public UserInfo(int userid) {      this.setUserid(userid);    }      @Override    publicint hashCode() {      returnthis.getUserid();    }      @Override    publicboolean equals(Object object) {      if (!(object instanceof UserInfo)) returnfalse;      final UserInfo other = (UserInfo)object;      returnthis.userid == other.userid;    }      @Override    public String toString() {      return"UserInfo[userid="+this.userid +", userName='"+ userName +"', sex='"+ sex                +"', birthday="+ birthday +", address="+ address +"";    }      publicint getUserid() {      return userid;    }      publicvoid setUserid(int userid) {      this.userid = userid;    }      public String getUserName() {      return userName;    }      publicvoid setUserName(String userName) {      this.userName = userName;    }      public Timestamp getBirthday() {      return birthday;    }      publicvoid setBirthday(Timestamp birthday) {      this.birthday = birthday;    }      public String getSex() {      return sex;    }      publicvoid setSex(String sex) {      this.sex = sex;    }      public Address getAddress() {      return address;    }      publicvoid setAddress(Address address) {      this.address = address;    }}
页: [1]
查看完整版本: 在Java SE环境下使用JPA1.0(1)