这两天在看黎活明老师的JPA的讲解视频,现在只了解这么多,记录备用。

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.transaction.Transactional; @Entity(name = "Student") // @Entity:表明本类是一个JPA实体,name的默认值就是类名。
@Table(name = "tbl_student") // @Table:指定和数据库中映射表的名称(默认配置好了数据源)。
public class Student { private Integer id; // 主键,自增 private String name; // 普通string private Date birthday; // 日期类型数据(只保存年月日) private Gender gender; // 枚举类型数据 private String info; // 大文本 private byte[] file; // 二进制文件流 private String imagePath; // 设置这个字段和数据表字段没有映射关系 /*
* 此处穿插一个问题,什么是属性,什么是字段?
* 字段:往上看,上面定义的这些都叫字段。
* 属性:往下看,get方法get后面跟的字符串叫做属性。
*
* 字段和属性有啥区别?
* 自动生成get/set方法时:属性和字段都可以和数据库表字段映射,此时的属性和字段名是一致的。
* 当属性和字段名不一致时:只有属性才会和数据库表字段产生映射。
*
* 所以:
* 使用注解映射属性和数据库表字段的关系时,最好将注解写在get方法上。
* 若是自动生成的get/set方法,即属性和字段名一致时,注解写在字段上面也是ok的。
*/ @Id // @Id:标识主键
@GeneratedValue(strategy = GenerationType.AUTO) // @GeneratedValue:指定自增策略,此处写的是默认策略,会根据不同数据库使用相应的自增方式。
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} // @Column:用来指定和数据库表字段的映射,同时可指定数据库中的字段长度,是否唯一,是否可为空等一系列的配置。
@Column(name = "name", length = 30, unique = true, nullable = false)
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} // @Temporal:指定是日期类型,并且保存格式为年月日(也可以指定为时间或时间戳)。
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} // @Enumerated:指定是枚举类型,保存时保存字符串。若不指定EnumType.STRING,只会保存在枚举中的下标(index)。
@Enumerated(EnumType.STRING)
@Column(length = 5)
public Gender getGender() {
return gender;
} public void setGender(Gender gender) {
this.gender = gender;
} // @Lob:大文本。如不指定@Lob,最多只能保存255个字符。指定@Lob之后可以保存非常大的文本。
@Lob
public String getInfo() {
return info;
} public void setInfo(String info) {
this.info = info;
} // @Lob:此处@Lob保存的是字符流。
@Lob
@Basic(fetch = FetchType.LAZY) // 此处设置查取对象时延迟加载字符流,避免占用太多的内存。只有用到该属性时,才会去加载。
public byte[] getFile() {
return file;
} public void setFile(byte[] file) {
this.file = file;
} // @Transactional:用于指定该属性和数据库表没有映射关系。
@Transactional
public String getImagePath() {
return imagePath;
} public void setImagePath(String imagePath) {
this.imagePath = imagePath;
} } /*
* 测试枚举类型的枚举类
*/
enum Gender {
MAN, WOMAN
}

JPA实体类中常用的注解的更多相关文章

  1. JPA实体类中的注解

    @Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...

  2. springMVC 【@response 返回对象自动变成json并且防止乱码】 & 【配置支持实体类中的@DateTimeFormat注解】

    在springmvc的配置文件中加上这一段即可 <bean class="org.springframework.web.servlet.mvc.annotation.Annotati ...

  3. Hibernate jpa 在实体类中对于时间的注解

    在时间类型DATE 属性上添加一个 @Temporal(TemporalType.DATE)(精确到年月日)@Temporal(TemporalType.TIME)(精确到时分秒)@Temporal( ...

  4. 解决Entity 实体类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误

    启动报错如下图所示: 解决方案: 查看网上的资料,大部分都说在实体类中没有添加加主键的注解@Id,这个是必须的.但是我的实体类中明明已经添加了@Id,为什么还会报这个错误呢? 后来检查了很久,发现是我 ...

  5. SSM框架中常用的注解

    @Controller:在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model , ...

  6. Spring中常用的注解,你知道几个呢?

    今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ...

  7. 利用Java反射机制对实体类的常用操作工具类ObjectUtil

    代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...

  8. Junit中常用的注解说明

    Java注解((Annotation)的使用方法是@注解名 ,能通过简单的词语来实现一些功能.在junit中常用的注解有@Test.@Ignore.@BeforeClass.@AfterClass.@ ...

  9. Java 注释类之常用元注解

    Java 注释类之常用元注解 自定义Java注释类时,我们使用方式如下:   @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD ...

随机推荐

  1. Delphi自写组件:可设置颜色的按钮

    unit ColorButton; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls; ...

  2. 递归与迭代的联系以及优缺点(以c++为例)

    1.递归的定义: 程序直接或间接的调用自身的方法. 递归算法的特点:(1) 递归就是在过程或函数里调用自身.(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口.(3) 递归算法解题通 ...

  3. 解密gzip压缩的网页数据流(转)

    因为采集某个网页遇到问题,一直无法获取页面数据. 经过一番排查,发现该网站会检查客户端的Header信息,如果遇到不明确的Header信息就直接否定,返回0数据. 如果Header信息正确,就会返回经 ...

  4. [数据结构与算法分析(Mark Allen Weiss)]二叉树的插入与删除 @ Python

    二叉树的插入与删除,来自Mark Allen Weiss的<数据结构与算法分析>. # Definition for a binary tree node class TreeNode: ...

  5. Android Gesture Detector

    Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等.这些Gesture会使用户体验大大提升.An ...

  6. WPF如何为程序添加splashScreen(初始屏幕)

    一.考虑到大部分的splashscreen其实都只是一个图片,所以最简单的做法是,先导入一张图片,然后设置它的生成操作为“splash screen” 二.通过程序设置SplashScreen pub ...

  7. 1分钟试用PowerShell 5.0新功能PowerShellGet安装Script Browser和Script Analyzer

    微软PowerShell 产品组上周发布了PowerShell 5.0 PowerShellGet功能.有了它,IT 人员可以方便地搜索,安装,更新PowerShell Module.在这篇博客中,我 ...

  8. 【转】苹果App Store审核指南中文翻译(更新)

    (注:<苹果应用商店审核指南>中文翻译最近一次更新为2013-03-04,文中红色部分是相对于2013-03-04版本的新增内容,绿色部分代表更改的内容,蓝色表示苹果相关官方文档的链接.) ...

  9. openjudge noi 鸡尾酒疗法

    题目链接:http://noi.openjudge.cn/ch0105/18/ 总时间限制: 1000ms 内存限制: 65536kB 描述 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由 ...

  10. C语言100个经典的算法

    C语言的学习要从基础開始.这里是100个经典的算法-1C语言的学习要从基础開始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每一个月都生一对兔子.小兔 子长到第三个月后每一 ...