JPA学习记录四(了解部分注解并搭建出多类型的数据字段)

来源:互联网 发布:mac jdk1.6下载 编辑:程序博客网 时间:2024/06/07 00:20

一:首先分析数据表的字段类型

1.id     主键,自增策略设置

2.name    长度为10,不能为空,在数据表列名为personName

3.birthday    类型为Date ,在数据表中时间存放格式为Date

4.gender    类型为枚举类型,在数据表存储的值为枚举值,且默认值为MAN

5.info         类型为String,在数据表类型为大文本类型

6.file        类型为字节类型,在数据表中以二进制存储,并且在不需要时,不进行加载,防止占内存

7.imagepath    不默认放进数据表中


二.创建person类


package cn.zl.jpa.domain;import java.util.Date;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.EnumType;import javax.persistence.Enumerated;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Lob;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;import javax.persistence.Transient;@Entity@Table(name="person")public class Person {private Integer id;private String name;private Date birthday;//1987-12-10private Gender gender=Gender.MAN;//设置默认值private String info;    public Byte[] file;    private String imagepath;            @Transient//不将这个属性放入数据库    public String getImagepath() {return imagepath;}public void setImagepath(String imagepath) {this.imagepath = imagepath;}@Lob//存放二进制类型@Basic(fetch=FetchType.LAZY)//当不访问这个属性时,就不从数据库中装载进内存,防止数据太大,占内存public Byte[] getFile() {return file;}public void setFile(Byte[] file) {this.file = file;}@Lob//这个注解是为了生成可以存放大文本的数据public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}@Enumerated(EnumType.STRING)//枚举类型,保存字符串进数据库,ORDINAL是保存索引值进数据库(0,1)@Column(length=5,nullable=false)//保存枚举类型不能为空,枚举类型中最大长度为5public Gender getGender() {return gender;}public void setGender(Gender gender) {this.gender = gender;}@Temporal(TemporalType.DATE)//选择时间的格式//@Column(nullable=false)public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Person() {}public Person(String name) {this.name = name;}@Id @GeneratedValue(strategy = GenerationType.AUTO)public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(length=10,nullable=false,name="personName")public String getName() {return name;}public void setName(String name) {this.name = name;}}


枚举类型类编写:

package cn.zl.jpa.domain;public enum Gender {MAN,WOMEN}


三.测试编写

package junit.test;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import org.junit.Test;import cn.zl.jpa.domain.Person;public class PersonTest {@Testpublic void save() {     EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();     em.persist(new Person("哈哈"));//需要在person中定义构造函数,一个无参数的和一个有参数的     em.getTransaction().commit();     em.close();     factory.close();}}




0 0
原创粉丝点击