`

JPA完成单表注解配置说明包括日期,大文本,二进制文本,枚举

    博客分类:
  • JPA
阅读更多

1,在src下面新建一个META-INF文件夹,在META-INF下面新建一个persistence.xml的配置文件,persistence.xml配置如下:我这里的JPA采用的是Hibernate实现,不用的实现下面的配置文件的内容不一样的。

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">
   <persistence-unit name="mengya" transaction-type="RESOURCE_LOCAL">
      <properties>
         <!-- 方言  -->
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
         <property name="hibernate.connection.username" value="root"/>
         <property name="hibernate.connection.password" value="123"/>
         <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mp?useUnicode=true&amp;characterEncoding=UTF-8"/>
      </properties>
   </persistence-unit>
</persistence>

 2,配置一个实体Bean如:

package com.mengya.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;
import javax.persistence.Transient;

import com.mengya.util.Gender;

//表示实体Bean
@Entity
//设置表名
@Table(name = "PERSON")
public class Person {

	private Integer id;

	private String name;

	private Date birthday;
	
	private String info;
	
	private byte[] file;
	
	private String imagePath;
	
	// 枚举类型
	// 设置该列的默认值,在字段后面赋初始值
	private Gender sex = Gender.MAN;

	public Person() {

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

	// 放在get方法上面或字段上面
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Integer getId() {
		return id;
	}

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

	// 设置该列在数据中列名,长度,非空
	@Column(name = "p_name", length = 10, nullable = false)
	public String getName() {
		return name;
	}

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

	// 设置日期的格式为yyyy-MM-dd
	@Temporal(TemporalType.DATE)
	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	// 取其枚举的值
	@Enumerated(EnumType.STRING)
	// 取其枚举的索引
	// @Enumerated(EnumType.ORDINAL);
	@Column(length = 10, nullable = false)
	public Gender getSex() {
		return sex;
	}

	public void setSex(Gender sex) {
		this.sex = sex;
	}
	
	//@Lob表示大的文本字段
	//@Basic(fetch=FetchType.LAZY)设置该字段是否懒加载
	@Lob @Basic(fetch=FetchType.LAZY)
	public String getInfo() {
		return info;
	}

	public void setInfo(String info) {
		this.info = info;
	}
	
	//大的二进制字段
	@Lob
	public byte[] getFile() {
		return file;
	}

	public void setFile(byte[] file) {
		this.file = file;
	}
	
	//非持久化字段(数据库中没有字段与之对应)
	@Transient
	public String getImagePath() {
		return imagePath;
	}

	public void setImagePath(String imagePath) {
		this.imagePath = imagePath;
	}

}

性别枚举

package com.mengya.util;

public enum Gender {
	MAN,WOMAN;
}

 

测试用例如下:

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import org.junit.BeforeClass;
import org.junit.Test;

import com.mengya.bean.Person;
import com.mengya.util.Gender;

public class PersonTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	
	@Test public void save(){
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
		EntityManager manager=factory.createEntityManager();
		manager.getTransaction().begin();
		
		Person p=new Person();
		p.setName("小酱油");
		DateFormat df=DateFormat.getDateInstance();
		try {
			Date d=df.parse("1986-8-25");
			p.setBirthday(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		p.setSex(Gender.WOMAN);
		
		manager.persist(p);
		
		manager.getTransaction().commit();
		manager.close();
		factory.close();
	}
}

 

 

 

  • JPA_Dome.rar (9.9 KB)
  • 描述: 我的应用实例
  • 下载次数: 36
1
0
分享到:
评论

相关推荐

    05_JPA详解_日期_枚举等字段类型的JPA映射.zip

    本资料主要针对JPA在处理日期、枚举等特殊字段类型时的映射进行深入解析。 ### 1. JPA基本概念 JPA通过提供一套API和元数据接口,允许开发人员将对象模型与关系数据库的表结构进行映射,从而简化了数据库操作。它...

    Maven+SpringBoot+JPA单表增删改查实例

    本项目选择了"Maven+SpringBoot+JPA"这一技术栈,旨在提供一个简单的单表操作示例,帮助开发者快速理解如何在Spring Boot环境下使用Maven构建项目,并通过Spring Data JPA实现数据的增删改查功能。 首先,让我们...

    05_传智播客JPA详解_日期_枚举等字段类型的JPA映射

    本课程"05_传智播客JPA详解_日期_枚举等字段类型的JPA映射"深入讲解了JPA在处理特定字段类型,如日期和枚举时的映射方法。以下是关于JPA和这些特定字段类型映射的详细知识: 1. **JPA基础**: JPA通过提供API和...

    jpa单表递归树形结构实现

    在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...

    JPA标签(注解)详细说明

    - 在JPA中,实体类可以继承,通过`@Inheritance`注解可以定义继承策略,如单表继承(SINGLE_TABLE)、联合继承(JOINED)和子类表继承(TABLE_PER_CLASS)。 以上就是JPA中常用的一些注解及其功能,它们极大地简化...

    JPA注解说明 详解

    Java Persistence API (JPA) 是Java平台上的一个标准,用于管理关系数据库中的对象持久化。...通过这些注解,JPA使得开发者无需直接编写SQL语句,即可完成对数据库的CRUD操作,极大地简化了数据访问层的实现。

    JPA注解参考文档

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...

    JPA注解的解释和说明.pdf

    @SpringBootApplication:通常用于主类上,包含@Configuration、@EnableAutoConfiguration、@ComponentScan注解,用于开启Spring Boot应用的自动配置。 @Repository、@Service、@RestController:这些注解分别用于...

    JPA 注解参考文档

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...

    JPA批注参考(主要介绍JPA中的相关注解)

    ### JPA批注参考 Java Persistence API (JPA) 是 Java 平台中用于处理对象关系映射(ORM)的标准接口。它简化了 Java 应用程序与关系型数据库之间的交互,使得开发者能够以面向对象的方式来操作数据库。本文将详细...

    Eclipse下如何配置JPA生成数据库表对应的已注解实体类(图文详解)

    本文将详细介绍如何在Eclipse环境中配置JPA,以便自动生成数据库表对应的已注解实体类。 首先,我们需要创建一个JPA项目。在Eclipse中,右键点击工作空间,选择"New" -&gt; "Other…",在弹出的对话框中,搜索并选择...

    基于注解配置的spring mvc+jpa

    如果使用spring mvc 3.2+和servelt 3+容器(比如tomcat8),那么web.xml和applicationContext.xml都不是必须的,可使用基于注解的配置: 基于配置的集成例子源代码:

    JPA注解 和hibernate 建表

    二、JPA注解 JPA提供了一些注解来描述实体 Bean 的持久化信息,例如: * @Entity:标注该类是一个实体Bean * @Table:标注该实体Bean对应的数据库表 * @Column:标注该实体Bean对应的数据库表中的列 * @Id:标注该...

    JPA-2 基本注解

    这些注解的使用使得开发者能够在Java代码中声明式地完成ORM配置,极大地简化了数据访问层的开发工作。在实际项目中,还可以结合使用其他高级注解,如@OneToMany、@ManyToOne、@OneToOne、@JoinColumn等,来处理更...

    spring+springmvc+jpa零配置注解开发

    然而,随着Spring的发展,它引入了基于注解的配置,使得我们可以完全摆脱XML,仅通过类上的注解就能完成配置。例如,我们可以在类上使用@Component、@Service、@Repository和@Controller注解来声明它们作为Spring...

    spring mvc data jpa maven demo 全注解

    标题中的“Spring MVC Data JPA Maven Demo 全注解”是指一个使用Spring MVC、Spring Data JPA和Maven构建的示例项目,该项目全面利用注解进行配置,旨在简化开发流程并提高效率。让我们详细了解一下这三个核心组件...

    jpa/hibernate继承注解

    以下是对"jpa/hibernate继承注解"这一主题的详细说明。 1. **单一表继承(Single Table Inheritance, STI)** 单一表继承是最简单的继承策略,所有的子类信息都存储在一个数据库表中。使用`@Inheritance(strategy ...

    SSH2框架整合并使用JPA注解配置

    - 配置JPA的实体扫描路径,这样Spring才能找到并管理使用了JPA注解的实体类。 2. **JPA注解配置**: - `@Entity`:标记一个类为数据库表的映射,相当于Hibernate的`@Table`。 - `@Id`:标识一个字段为表的主键,...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring注解是Spring框架中的一大特色,它极大地简化了配置过程,让代码更加简洁易读。注解如`@Component`、`@Service`、`@Repository`和`@Controller`用于标记不同层次的Bean,而`@Autowired`则负责自动装配Bean之间...

Global site tag (gtag.js) - Google Analytics