`
jiagou
  • 浏览: 2595311 次
文章分类
社区版块
存档分类
最新评论

JPA学习笔记---JPA实体Bean的建立---链接上一个博文:对实体Bean中属性进行操作:保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数据,可以存放

 
阅读更多
3.给上述生成的那个name字段:更改数据库中的字段名,是否为空,字段长度的设定,只需要
在Person.java文件中,加上
@Column(length=10,nullable=false,name="productname")
//设置字段的长度
public String getName() {
return name;
}
------------------------------------------------------------------
修改后的Person.java
package com.credream.bean;


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


@Entity
public class Person {
private Integer id;
private String name;
//默认构造函数
public Person() {
// TODO Auto-generated constructor stub
}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;

}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可


以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=10,nullable=false,name="productname")
//设置字段的长度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
---------------------------------------------------------------------
4.如果需要修改表的名字不需要默认值的话,只需要修改Person.java
@Table(name="persondb")
public class Person {
------------------------------------------
修改后的Person.java,可以修改生成表的名字,和字段的长度,名字,是否为空;
package com.credream.bean;


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


@Entity
@Table(name="persondb")
public class Person {
private Integer id;
private String name;
//默认构造函数
public Person() {
// TODO Auto-generated constructor stub
}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;

}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可


以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=10,nullable=false,name="productname")
//设置字段的长度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}
-----------------------------------------------------------
5.用实体Bean:Person来存放date类型的数据:
a.在hibernate中用xml文件是这样做的
<property name="" length=10 type="date"/>//只保存到日期
<property name="" length=10 type="datestam"/>//利用时间戳可以保存日期和时间
datestamp:指的是时间戳
<property name="" length=10 type="time"/>//只保存时间
时间戳是指文件属性里的创建、修改、访问时间
b.JPA中保存date类型:
1.在实体Bean:Person中声明date属性,注意用util包下的date
2.利用注解:
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
这样可以像数据表中保存日期类型数据
----------------------------------------------
修改后的Person.java,可以定义表的名字,字段的长度,是否为空,名字,插入日期类型
package com.credream.bean;


import java.util.Date;


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


@Entity
@Table(name="person")
public class Person {
private Integer id;
private String name;
private Date birthday;
//默认构造函数
public Person() {

}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;

}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可


以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=10,nullable=false,name="name")
//设置字段的长度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}

}
---------------------------------------------------------
6.像数据库中利用枚举类型保存性别:
a.在com.credream.bean下新建;
Gender.java
package com.credream.bean;


public enum Gender {
MAN,WOMAN
}
b.在Person.java中添加这个属性:
private Gender gender=Gender.MAN;//设置数据库中的默认值
在get方法前写注解:
@Enumerated(EnumType.STRING) @Column(length=5,nullable=false)//保存的是字符串
public Gender getGender() {
return gender;
}
以上配置的话是以varchar的类型保存的,所以要设置这个字段的长度,注意保存枚举值的时


候,要设置成不允许为空
@Enumerated(EnumType.ORDINAL):指的是通过保存,枚举的索引来输入数据库:就是,比如男


为0,女为1,哪个是0,1跟在enum枚举中的,书写顺序有关;
--------------------------------------------------------------------
修改后的Person.java
可以保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;
package com.credream.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.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name="person")
public class Person {
private Integer id;
private String name;
private Date birthday;
private Gender gender=Gender.MAN;//设置数据库中的默认值
//默认构造函数
public Person() {

}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;

}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可


以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=10,nullable=false,name="name")
//设置字段的长度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Enumerated(EnumType.STRING) @Column(length=5,nullable=false)//保存的是字


符串
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}

}
---------------------------------------------------------
7.存放大文本数据:LONGTEXT类型,存放文件进数据库,使用懒加载机制
比如存放人员的简历;
a.在Person.java中添加属性:
private String info;
b.@Lob//说明字段是大文本数据
public String getInfo() {
return info;
}
c.在Person.java中添加属性:
这个属性是用来存放二进制数据的:
1.private Byte[] file;//用于存放2进制数据的
2.@Lob @Basic(fetch=FetchType.LAZY)
//用于存放2进制数据的 , @Basic(fetch=FetchType.LAZY)懒加载,如果没有用到
//的话就不会加载,比如不使用file的时候,平常的话,如果查询姓名的时候
//会把所有的那一行的字段取出来,很占用内存,用这个注解后,只是在需要的时候
//才会取出来,这样的话可以节省内存,提高性能
public Byte[] getFile() {
return file;
}
----------------------------------------------
修改后的Person.java
可以保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数


据,可以存放大文本数据,可以存放文件,可以使用懒加载机制
package com.credream.bean;


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;


@Entity
@Table(name="person")
public class Person {
private Integer id;
private String name;
private Date birthday;
private Gender gender=Gender.MAN;//设置数据库中的默认值
private String info;
private Byte[] file;//用于存放2进制数据的
//默认构造函数
public Person() {

}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;

}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可


以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=10,nullable=false,name="name")
//设置字段的长度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Enumerated(EnumType.STRING) @Column(length=5,nullable=false)//保存的是字


符串
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
@Lob//说明字段是大文本数据
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Lob @Basic(fetch=FetchType.LAZY)
//用于存放2进制数据的 , @Basic(fetch=FetchType.LAZY)懒加载,如果没有用到
//的话就不会加载,比如不使用file的时候,平常的话,如果查询姓名的时候
//会把所有的那一行的字段取出来,很占用内存,用这个注解后,只是在需要的时候
//才会取出来,这样的话可以节省内存,提高性能
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}

}
注意:一般如果数据超过了1m:就应该使用懒加载;
-------------------------------------------------------
8.不和数据库中的表中的字段相映射的属性创建:
a.在Person.java中添加字段:这个字段将不会出现在数据库的表中
private String imagepath;
b.使用注解:
@Transient //该属性不会映射到数据库中的字段
public String getImagepath() {
return imagepath;
}
-------------------------------------------------------
分享到:
评论

相关推荐

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    JPA学习笔记-EJB-02JPA属性注解

    ### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...

    JPA学习笔记-EJB-05JPA实体对象状态和实体对象的高级操作

    此时,该对象仅仅是一个普通的Java Bean,并没有与数据库建立关联。 2. **托管状态(Managed State)** 一旦瞬时状态的对象通过`persist()`方法被实体管理器管理后,该对象转变为托管状态。在此状态下,实体管理...

    JPA学习笔记-EJB-04JPA关联映射总结

    本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将数据库中的表关系映射到Java对象的关联上。在Hibernate中,这些关系通常通过XML配置文件来定义,而在JPA...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    总的来说,`hibernate-jpa-2.1-api-1.0.0.final.jar`为开发者提供了丰富的JPA 2.1特性的实现,使得在Java项目中使用Hibernate进行数据库操作变得更加便捷和标准化。通过深入理解和熟练运用这个API,我们可以构建出...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    JPA学习笔记-EJB-03JPA主键生成策略总结

    - **概述**:`TABLE`策略通过在数据库中创建一个单独的表来管理主键值。这种方式相对独立于数据库类型,适合需要跨库生成唯一ID的场景。该策略通过`@TableGenerator`注解来配置生成器的细节。 - **示例代码**: ...

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用

    hibernate-jpa-2.0-api-1.0.1.Final-sources

    这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们深入了解其内部机制,从而更好地应用在实际项目中。 1. **JPA简介**:Java Persistence API(JPA)是Java平台上的一个标准...

    jpa的学习---jpa demo工程

    JPA是Java平台上的一个标准,用于处理对象关系映射(ORM),它提供了一种在Java应用中管理和持久化对象的方式,简化了数据库操作。本篇文章将围绕JPA的基础概念、配置、实体类的创建、查询操作以及JPA Demo工程的...

    传智播客JPA学习笔记修改免积分版

    ### 传智播客JPA学习笔记知识点梳理 #### 一、JPA概述与核心价值 - **定义**: JPA (Java Persistence API) 是由 Sun 官方提出的一种 Java 持久化标准,旨在为 Java 开发者提供一套统一的对象-关系映射 (ORM) 工具,...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...

    jpa学习笔记

    ### JPA 学习笔记详解 #### 一、JPA 概述 Java Persistence API (JPA) 是 Sun 公司提出的一种 Java 持久层标准,它为 Java 开发者提供了一种对象关系映射 (ORM) 的工具来管理 Java 应用程序中的关系型数据。JPA ...

    hibernate-jpa-2.1-api 1.0.0.Final API

    8. **级联操作(Cascading)**:通过@Cascade注解,可将一个实体的操作(如保存、删除)应用到与其关联的实体。 9. **实体监听器(Entity Listener)**:通过@EntityListener注解,可以定义在特定实体事件(如保存...

Global site tag (gtag.js) - Google Analytics