1,实体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 junit.test;
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();
}
@Test public void getPerson(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
//类似Hibernate中的get方法
Person p=manager.find(Person.class, 2);
System.out.println(p.getId() + p.getName() + p.getSex());
manager.close();
factory.close();
}
@Test public void getPerson2(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
//类似Hibernate中的load方法,没有真正的访问数据库,返回的只是一个代理对象
//若在manager.close()之前没有访问p对象而是在它之后访问p对象的属性则会出错
Person p=manager.getReference(Person.class, 2);
System.out.println(p.getName());//这个时候才真正的访问数据库加载数据
manager.close();
factory.close();
}
@Test public void updatePerson(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
manager.getTransaction().begin();
//由于处于托管状态并且处于事务当中故当事务提交时与数据库同步
Person p=manager.find(Person.class, 2);
p.setName("梦娅");
manager.getTransaction().commit();
manager.close();
factory.close();
}
@Test public void updatePerson2(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
manager.getTransaction().begin();
Person p=manager.find(Person.class, 3);
manager.clear();//clear方法使p由托管状态变成游离状态
p.setName("张明学");
manager.merge(p);//merge方法将实体对象与数据库同步
manager.getTransaction().commit();
manager.close();
factory.close();
}
@Test public void deletePerson(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
manager.getTransaction().begin();
Person p=manager.find(Person.class, 2);
//Person p=manager.getReference(Person.class, 2);
manager.remove(p);
manager.getTransaction().commit();
manager.close();
factory.close();
}
//单个查询
@Test public void query(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager = factory.createEntityManager();
String querySql="select p from Person p where p.id=?1";
Query query=manager.createQuery(querySql);
query.setParameter(1, 1);
Person p=(Person) query.getSingleResult();
System.out.println(p.getName());
manager.close();
factory.close();
}
//批量查询
@Test public void queryAll(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager=factory.createEntityManager();
String querySql = "select p from Person p";
Query query=manager.createQuery(querySql);
List<Person> personList=query.getResultList();
for(Person p:personList){
System.out.println(p.getName());
}
manager.close();
factory.close();
}
@Test public void updateQuery(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
String querySql = "update Person p set p.name=:name where p.id=:id";
Query query=manager.createQuery(querySql);
query.setParameter("name", "梦娅");
query.setParameter("id", 1);
query.executeUpdate();
manager.getTransaction().commit();
manager.close();
factory.close();
}
@Test public void deleteQuery(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mengya");
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
String querySql = "delete Person where id=:id";
Query query=manager.createQuery(querySql);
query.setParameter("id", 1);
query.executeUpdate();
manager.getTransaction().commit();
manager.close();
factory.close();
}
}
分享到:
- 2009-10-12 14:47
- 浏览 2245
- 评论(0)
- 论坛回复 / 浏览 (0 / 3111)
- 查看更多
相关推荐
至此,我们已经完成了Spring Boot + JPA实现对MySQL数据库的增删改查功能。通过这种方式,开发者可以专注于业务逻辑,而不必关心底层数据库操作的细节,大大提高了开发效率。在实际项目中,还可以结合其他Spring ...
- 通过使用JPA的注解,如`@Entity`(表示这是一个实体类)、`@Table`(指定数据库表名)、`@Id`(标识主键)、`@GeneratedValue`(主键生成策略)等,可以对JavaBean进行更精细的配置。 5. **使用生成的JavaBean**...
- 博客园.url"、"JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3 - crawl+ - 用上DAO层了.url"这些链接很可能是博客文章,详细解释了如何使用Spring Data JPA进行数据库操作,包括基本的CRUD...
本项目选择了"Maven+SpringBoot+JPA"这一技术栈,旨在提供一个简单的单表操作示例,帮助开发者快速理解如何在Spring Boot环境下使用Maven构建项目,并通过Spring Data JPA实现数据的增删改查功能。 首先,让我们...
JPA(Java Persistence API)是Java平台上的标准持久层框架,它为ORM(Object-Relational Mapping)提供了统一的API,使得开发人员可以方便地在Java应用中进行数据库操作。CRUD是创建(Create)、读取(Read)、更新...
### JPA基本概念实例操作详解 #### EntityManager与基本概念 - **EntityManager简介**:`EntityManager`,也称为实体管理器,是Java Persistence API (JPA) 中的核心接口之一,负责处理实体对象的生命周期管理和...
在本项目中,我们主要探讨的是如何利用Gradle构建工具,SpringBoot框架,以及Java Persistence API(JPA)来实现单表的增删改查功能。这是一个非常适合初学者上手的实例,它将帮助你理解如何在实际开发环境中集成...
Spring Data JPA 是一个由 Spring 框架...这样,Spring Data JPA 将自动生成实现,提供对 Person 表的所有基本操作。通过这样的方式,开发者可以快速构建数据访问层,专注于业务逻辑,而不必过多关注底层的数据库操作。
在Java世界中,Java Persistence API (JPA) 是一种用于管理关系数据库...这就是JPA中一对一关系的基本配置和使用方式。在实际开发中,根据项目需求,你可能还需要考虑懒加载、fetch策略、级联操作等方面的优化和调整。
JPA基本操作** - **CRUD操作**: JPA 提供了 create、read、update 和 delete 方法,对应于数据库的增删改查操作。 - **查询语言(JPQL)**: JPA有自己的查询语言,类似于SQL,可以执行复杂的查询操作。 - ** ...
**增删查改**是数据库操作的基本操作: 1. **增加(Insert)**:使用`EntityManager`的`persist()`方法将新实体插入数据库。 2. **删除(Delete)**:调用`remove()`方法来删除一个托管实体,或者设置其标识符为null...
在这个“jpa的自定义CURD”主题中,我们将深入探讨如何通过JPA实现对数据库的基本操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 **创建(Create)**: 在JPA中,创建新记录通常是通过`...
在Spring JPA中,你可以通过定义Repository接口来实现对数据库的操作,而Spring会自动帮你完成数据访问的大部分工作。 1. **什么是JPA?** Java Persistence API (JPA) 是Java平台上的一个标准,它定义了如何在Java...
在"SpringBoot+JPA.zip"这个压缩包中,你将找到一个入门级的示例项目,它展示了如何在SpringBoot环境中使用JPA进行基本的数据库操作,包括增(Create)、删(Delete)、改(Update)和查(Query)。这个项目对于初学...
它提供了一种方式将Java类映射到数据库表,从而简化数据库操作。以下是如何在Eclipse环境下配置JPA的详细步骤: 1. **添加OpenJPA库**: 首先,你需要在Eclipse中设置用户库来包含OpenJPA的依赖。进入`Window` -> ...
在"JPA快速入门初步(myeclipse)"中,我们将学习如何在MyEclipse中设置JPA项目,理解基本的JPA概念,以及如何使用注解来定义实体和映射数据库表。 1. **JPA基础概念**: - **实体(Entity)**: 表示数据库中的表...
在本项目实例"JSP连接数据库基本操作"中,我们将探讨如何使用Java Server Pages (JSP) 技术与MySQL数据库进行交互。JSP是一种基于Java的动态网页开发技术,常用于构建服务器端的Web应用程序。它允许开发者将HTML、...
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据,它为开发者提供了一种对象/关系映射(ORM)工具,将数据库操作转换为对Java对象的操作,从而简化了数据库应用的开发。JPA是...
总的来说,搭建JPA环境需要对JPA规范有基本理解,并确保项目中包含了正确的jar包,特别是JPA API、Hibernate实现、JDBC驱动以及可能的事务管理组件。通过这些,你可以轻松地在Java应用中实现对象与数据库的无缝对接...
它将Java对象与数据库表进行映射,使得开发者可以通过操作对象来完成数据库操作。Hibernate提供了事务管理、缓存机制和一对多、多对一等复杂关系的处理。在项目中,我们需要配置Hibernate的实体类、实体管理工厂以及...