JPA API与注解】的更多相关文章

一.JPA API Persistence 类:用于获取 EntityManagerFactory 实例,该类含有静态方法 createEntityManagerFactory. //persistence.xml 中的 persistence-unit String persistenceUnitName = "jpa-1"; EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFact…
上一篇学习了JPA的helloworld,也初略的使用了一些注解,接下来就细细的了解一下有哪些注解,和这些注解的作用 JPA的基本注解: ①@Entity,@Table,@Id,@GeneratedValue,@Column,@Basic,这些是最基本的注解了 一:@Entity: 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表.如声明一个实体类 User,它将映射到数据库中的 user 表上.如果没有使用@Table注解的话,那么vo的名称是什么,那么相应的数据…
新公司用的SSH(springmvc)框架,看代码的时候,发现没有hbm.xml文件,全部使用的注解形式.在一次闲聊的时候问同事,这么多entity  写起来不麻烦么.同事说根据数据库自动生成的.于是我在网上搜索关于hibernate  自动生成实体的(我去年写过一篇关于mybatis 自动生成dao的,感兴趣的可以去翻一翻),最开始搜到的是hibernate-tool 工具,研究了半天还是不会用.本打算放弃了,今天遇到一个问题,需要将一个A表的数据插入的另一个B表里面,但是呢我又不想把B表清空…
spring使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.save(Iterable<T> entities) 3)保存并立即刷新一个实体:repository.saveAndFlush(T entity) 注:若是更改,entity中必须设置了主键字段,不然不能对应上数据库中的记录,变成新增(数据库自动生成主键)或报错(数据库不自动生成主键)了 2.@Que…
JPA的@GeneratedValue注解,在JPA中,@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键),@GeneratedValue提供了主键的生成策略.@GeneratedValue注解有两个属性,分别是strategy和generator,其中generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@Ta…
@MappedSuperclass使用条件: 当我们进行开发项目时,我们经常会用到实体映射到数据库表的操作,此时我们经常会发现在我们需要映射的几个实体类中,有几个共同的属性,例如编号ID,创建者,创建时间,修改者,修改时间,备注等.遇到这种情况,我们可能会想到把这些属性抽象出来当成一个父类,然后再以不同的实体类来继承这个父类. 那么,我们便可以使用@MappedSuperclass注解,通过这个注解,我们可以将该实体类当成基类实体,它不会映射到数据库表,但继承它的子类实体在映射时会自动扫描该基类…
JPA的@GeneratedValue注解,在JPA中,@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键),@GeneratedValue提供了主键的生成策略.@GeneratedValue注解有两个属性,分别是strategy和generator,其中generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@Ta…
http://www.objectdb.com/api/java/jpa/JoinColumns 用hibernate和jpa annotation 大概一年多了,今天闲来无事,对他们关联关系元数据写法做一个总结. 1.一对一主键关联 这个在实际项目中用的比较少,大部分是通过用外键做关联的,这里用用户和手机号举个例子,用户和手机号是一对一的关系,代码如下: User实体 package com.own.model; import java.io.Serializable; public clas…
就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系. 该注解的定义如下: @Target({METHOD, FIELD}) @Retention(RUNTIME)public @interface Column { String name() default ""; boolean unique() default false; boolean nullable() default true; boolean inse…
前提准备: 搭建一个springboot项目,详情请参见其它博客:点击前往 1 引入相关依赖 web.mysql.jpa.lombok <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&…
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 在上面搭建JPA的HelloWorld时在实体类中用到了一些注解 package com.badao.jpa.helloworld; import javax.persistence.Column; import javax.persistence.Entity; import javax.pers…
背景描述 我们经常会在项目中用到一些数据字典,在存储和传输时使用Code,在前端展示时使用Name,这样做的好处是便于系统维护,比如项目中用到了"医院"这个名称,如果后期需求发生变化不叫"医院"了,改成"医疗机构",假如不使用数据字典,那么我们代码中.数据库中所有用到"医院"的地方都要修改,麻烦不说,漏掉一个就是一个小Bug.在处理这个Code/Name的转化的时候,我思考了几种处理方式,第一种,使用@ManyToOne注解关…
在项目开发过程中,如果您的项目中使用了Spring的@Transactional注解,有时候会出现一些奇怪的问题,例如: 明明抛了异常却不回滚? 嵌套事务执行报错? ...等等 很多的问题都是没有全面了解@Transactional的正确使用而导致的,下面一段代码就可以让你完全明白@Transactional到底该怎么用. 直接上代码,请细细品味 @Service public class SysConfigService { @Autowired private SysConfigReposi…
使用场景 EntityListeners在jpa中使用,如果你是mybatis是不可以用的 它的意义 对实体属性变化的跟踪,它提供了保存前,保存后,更新前,更新后,删除前,删除后等状态,就像是拦截器一样,你可以在拦截方法里重写你的个性化逻辑. 它的使用 定义某种功能类型 @Embeddable注解表示这个对象不是单独的数据表,它里面的字段会在其它实体中公用 /** * 数据建立与更新. * Embeddable注解表示不会生成新的数据表,而它的属性会在其它表内部,比较容易实现代码复用. */ @…
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userName varchar(50) 那么如下的映射: @Data @Entity @Table(name="t_users") @NoArgsConstructor @AllArgsConstructor @Accessors(chain=true) public class User { @Id…
一.java对象与数据库字段转化 1.@Entity:标识实体类是JPA实体,告诉JPA在程序运行时生成实体类对应表 2.@Table:设置实体类在数据库所对应的表名 3.@Id:标识类里所在变量为主键 4.@GeneratedValue:设置主键生成策略,此方式依赖于具体的数据库 5.@Basic:表示简单属性到数据库表字段的映射(几乎不用) 6.@Column:表示属性所对应字段名进行个性化设置 7.@Transient:表示属性并非数据库表字段的映射,ORM框架将忽略该属性 8.@Temp…
在我们的jpa的helloworld中,我们看到了简单的一个jpa保存操作,下面就来好好学习一下,JPA最主要的几个类 1.基本的几个类: ①:Persistence 类是用于获取 EntityManagerFactory 实例.该类包含一个名为 createEntityManagerFactory 的 静态方法 . createEntityManagerFactory 方法有如下两个重载版本. 带有一个参数的方法以 JPA 配置文件 persistence.xml 中的持久化单元名为参数 我们…
来源于http://zjsword2000.blog.163.com/blog/static/4583983320083184844734/ 在hibernate中实现自定义类型,只要实现UserType接口即可或者以Component的形式提供.JPA的@Embedded有点类似,通过此注释可以在你的Entity中使用一般的java对象,此对象需要用@Embeddable标注 举个简单例子:Person类有一个name属性,name应该有firstName,lastName两个属性,一般的写法…
1. Persistence EntityManagerFactory 2. EntityManager#find EntityManager#getReference EntityManager#persistence EntityManager#remove 3. EntityTransaction(事物) 4.EntityManager 其他方法 5.EntityManager#merge 1.JPA相关接口/类:Persistence .Persistence 类是用于获取 Entity…
因碰到需要动态查询不同视图的结果,自己尝试使用@Query注解中传递视图名称参数: @Query("select * from ?1") List<Object> getDatats(String view); 但是结果报错,查看控制台的打印的异常信息,了解到是使用这种方法视图名会被加上单引号. 自己解决问题的方法: 不使用@Query注解,而是采用实体管理器.将sql语句字符串拼接视图名称参数. public List<Object> getDatas(Str…
hibernate是JPA最常用的实现之一,而且hiberante自身也对注释语法进行了支持.现在再不用去看那一堆堆的XML映射了.而且eclipse还提供了从数据库直接生成Entity Class的工具. 一.项目添加JPA工具 现在将已有项目添加JPA支持,首先选择项目右键Properties->Project Facets 勾选列表Project Facts 下JPA选项,确定选择转入数据库连接配置 >>点击Furhter configuration available platf…
比如有个实体类对象,类名为Book,对应数据表的表名为book 1. 一个使用@Query注解的简单例子:占位符?1和?2 @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2") List<Book> findByPriceRange(long price1, long price2); 2.  Like表达式:指定参数 :name,下面要用@P…
/** * * @param file_name 传入参数 * @return */ @Query(value = "select * from user where name LIKE CONCAT(:file_name,'%')", nativeQuery = true) List<User> findByFileName(@Param("file_name") String file_name); 注意:@Param注解是必须的,目的是为了绑定参数…
http://www.blogjava.net/ITdavid/archive/2009/02/25/256605.html 注解方式的主键配置     非自增字段为主键,注解annotation表示 以N_LOG_ID字段为例: @Id @Column(name = "N_LOG_ID", unique = true, nullable = false)   自增字段为主键,注解annotation表示 以N_LOG_ID字段为例:   Oracle数据库 @Id @Sequence…
如题,在数据库批量操作方法上使用@Transactional注解,其中一条数据抛出异常了,却死活不回滚. 批量操作方法是公有的,spring也是默认支持事务的,排除代码层面问题,那么就看看数据库是否支持事务吧: mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+----…
1. 概述 JPA(Java Persistence API):用于对象持久化的API; JPA本质上是一种ORM规范,不是ORM框架;提供了一些编程的API接口; Hibernate是实现; 1.1 JPA 包括三方面的技术 ORM映射元数据:JPA支持XML和JDK5.0注解两种元数据的形式; JPA的API:用于操作实体对象,执行CRUD操作; 查询语言(JPQL) 2. Hello World 创建persistence.xml,配置持久化单元 指定跟哪个数据库进行交互; 指定JPA使用…
JPA的介绍分析 Java持久化API (JPA) 显著简化了Java Bean的持久性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的可移植方式,将Java 对象映射到关系数据库表以及后续的一系列数据持久化行为. JPA可以将任何普通的Java 对象 (POJO) 类指定为 JPA 实体. JPA实体:一个应使用JPA实现程序的服务将其非临时字段持久保存到关系数据库(在 Java EE EJB 容器的内部或在简单 Java SE 应用程序中的 EJB 容器的外部)…