JPA学习---第五节:日期和枚举等字段类型的JPA映射

1、在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的?

有类,代码如下:

package learn.jpa.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Integer id;
    private String name;

    public Person(){}

    public Person(String name){
        this.name = name;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

表名:是根据 Entity 的名称来命名的

字段:是根据属性名称来命名的

private Integer id;
private String name;

以上的 id 和 name 是称之为字段, getId() 和 setId() 中的 id 称之为属性。

2、更改表名和字段名或长度,如下代码所示:

package learn.jpa.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_person")
public class Person {

    @Id
    @GeneratedValue
    private Integer id;
    @Column(length=64,name="personName",nullable=false)
    private String name;

    public Person(){}

    public Person(String name){
        this.name = name;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

3、日期和枚举型字段的映射,代码如下:

实体类:

package learn.jpa.bean;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="t_person")
public class Person {

    @Id                //@Id用于标记属性的主键
    @GeneratedValue
    private Integer id;
    @Column(length=64,name="personName",nullable=false)
    private String name;
    // TemporalType.DATE 表示日期格式 例:2014-10-01
    // TemporalType.TIME 表示时间格式  例:12:21:34
    // TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34
    @Temporal(TemporalType.DATE)
    private Date brithday;
    // @Enumerated 注解枚举型
    // EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN
    // EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值
    @Enumerated(EnumType.STRING)
    @Column(length=5, nullable=false)
    private Gender gender;

    public Person(){}

    public Person(String name){
        this.name = name;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Date getBrithday() {
        return brithday;
    }

    public void setBrithday(Date brithday) {
        this.brithday = brithday;
    }

    public Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) {
        this.gender = gender;
    }

}

枚举类:

package learn.jpa.bean;

/**
 *
 * @doc        性别枚举型
 *
 */
public enum Gender {
    MAN,WOMEN;
}

说明:

1、TemporalType.DATE 表示日期格式 例:2014-10-01
2、TemporalType.TIME 表示时间格式  例:12:21:34
3、TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34

@Enumerated 注解枚举型  
1、EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN
2、EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值

时间: 2024-10-18 00:36:29

JPA学习---第五节:日期和枚举等字段类型的JPA映射的相关文章

Linux学习第五节课-标准I/O和管道

Linux学习第五节课 ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 三十一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文

JPA学习(五、JPA_二级缓存)

框架学习之JPA(五) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作:其二,Sun希望整合ORM技术,实现天下归一. 学习视频:尚硅谷框架jpa学习(有兴趣的同学留言邮箱) 使用软件:eclipse Java版本:jdk8 本节目录 五.JPA_二级缓存 1.添

JPA学习---第十一节:JPA中的多对多双向关联实体定义与注解设置及操作

1.定义实体类,代码如下: (1).学生实体类: package learn.jpa.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import

JPA学习---第七节:使用JPA加载_更新_删除对象

1.添加数据,代码如下: @Test public void save(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("learn_jpa"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin(); // 开启事务 em.persist(new Person("hwl&quo

JPA学习---第十节:JPA中的一对一双向关联

1.创建实体类,代码如下: 代码清单1: package learn.jpa.entity; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Join

JPA学习---第四节:JPA实例与JPA主键生成策略

1.编写实体类,代码如下: package learn.jpa.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Person { @Id @GeneratedValue private Integer id; private String name; public Person(){}

Ant学习---第五节:Ant_Junit介绍(基于3的版本)

Junit3 和 Junit4 有本质上的区别 1.普通java类,代码如下: package learn.junit; public class HelloWorld { public String Hello(){ return "world"; } public String World(){ return "hello"; } public String Nil(){ return null; } public String NotNil(){ return

Hibernate学习---第五节:普通组件和动态组件

一.普通组件映射配置 1.创建组件类,代码如下: package learn.hibernate.bean; /** * 组件类 */ public class Phones { private String companyPhone; private String homePhone; private String personalPhone; public Phones() { } public Phones(String companyPhone, String homePhone, St

Linux学习第五节课(2019.9.14)

今天终于学到了Vim文本编辑器,"他"有三个模式:命令.输入.末行模式,需要掌握切换方法,以及一些基础命令,然后一些巴拉巴拉的东西,暂时不一一说出来(通过vim,设置主机名配置网卡以及yum仓库),然后有讲到[ ]测试语句,记住记住,[ ]两边必须有空格.还有降到了&&和||的使用方,最后讲到了流量控制语句.今晚老刘忘记强调一句话,Linux一切都是文件.老刘网站:linuxprobe.com有兴趣的可以去看看------------------------------