博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORM 框架:springJPA
阅读量:3733 次
发布时间:2019-05-22

本文共 2165 字,大约阅读时间需要 7 分钟。

SpringJPA

  1. Spring JPA 封装了统一的持久化接口,底层实现上仍是 hibernate,openJpa 等 ORM 框架;

  2. JPA 维护一个持久化上下文 Persistence Context,负责管理实体的生命周期,涉及的类,主要有 Persistence,EntityManagerFactory,EntityManager,EntityTransaction,Query 等;

  3. 实体对象与表的映射,是通过 annotion 或者 xml 形式定义,注解有 @Entity,@Table ,@Id,@GeneratedValue,@Column,其中 id 的生成策略有:

1.GeneratorType.AUTO ,由JPA自动生成	2.GenerationType.IDENTITY,使用数据库的自增长字段,需要数据库的支持(如SQL Server、MySQL、DB2、Derby等)	3.GenerationType.SEQUENCE,使用数据库的序列号,需要数据库的支持(如Oracle)	4.GenerationType.TABLE,使用指定的数据库表记录ID的增长 需要定义一个TableGenerator,在@GeneratedValue中引用	JPA和Hibernate主键注解参考文章:    	http://blog.csdn.net/z69183787/article/details/36048147        http://blog.csdn.net/oathevil/article/details/7227699
  1. 持久化上下文的声明,配置 LocalContainerEntityManagerFactoryBean 的bean,属性配置 数据库连接,JPA实现等;
org.hibernate.dialect.MySQL5InnoDBDialect
update
true
true
// 如果想把 Hibernate 或 JPA 异常,都转换成 spring 异常,需要配置
  1. 实体对象的操作,是通过 EntityManager 接口定义的方法,persist(),merge(),remove(),find(),要求操作是针对被持久化上下文管理的对象;
public void static main(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-jpa.xml"); JpaDao dao = ctx.getBean(JpaDao.class); EntityManager entityManager = ctx.getBean(EntityManagerFactory.class).createEntityManager(); EntityTransaction t = entityManager.getTransaction(); t.begin(); StudentOrm s = new StudentOrm();s.setName("liud");s.setAge(25);s.setLevel(1); entityManager.persist(s); t.commit(); entityManager.close(); }
  1. 更多细节,参考:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html;

Spring Data

  1. dao 层接口,继承 JpaRepository,能够自动生成一些 curd 接口实现,对于自定义 sql 的需求,使用 @Query 来指定需要执行sql;
public interface SplitterRepository extends JpaRepository
{
@Query("select * from Splitter s where s.email like '%gmail.com'") List
findAllGmailSplitters(); }
  1. Jpa 自动生成的实现,是查找与接口名相同,后加 Impl 的类,如果存在,就添加自动生成的方法,如,自动生成的实现,会添加到 SplitterRepositoryImpl 中;
你可能感兴趣的文章
MySQL中事务的五种分类
查看>>
史上最全TCP机制
查看>>
linux-find命令入门教程
查看>>
Celery入门教程
查看>>
C语言排序算法
查看>>
Linux awk 命令从入门到入土
查看>>
python 用socket搭建socket服务器-多线程网络编程
查看>>
python常用模块整理(超详细)
查看>>
用nginx做反向代理
查看>>
CentOS7搭建lvs-DR模式
查看>>
史上最易部署lvs集群-tun模式
查看>>
LVS原理详解
查看>>
算法题
查看>>
python进程,线程,协程
查看>>
python网络编程
查看>>
你值得拥有的linux下的网络io 同步/异步/阻塞/非阻塞/BIO/NIO/AIO
查看>>
nginx日志文件配置
查看>>
http协议
查看>>
HTTP over SSL/TLS
查看>>
TCP-UDP协议
查看>>