JPA入门
1.JPA认识
1.1什么是JPA
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java提供了一种对象/关系映射工具来管理Java应用中的关系数据他的作用是简化对mysql的操作
1.2JQP的优缺点
优点: 1.JPA的主要目标之一就是提供更加简单的编程模型
2.JPA拥有可媲美JDBC的查询能力
3.JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句
缺点: 1.不能干预sql语句的生成
2.一个项目中,如果对sql语句的优化要求比较高,不适合用JPA
3.如果一张表的数据非常大的时候也不能用JPA
1.2 ORM :ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中
1.3JPA的配置
1.首先导入依赖的包
4.0.0 com wjx 1.0-SNAPSHOT org.hibernate hibernate-core 4.3.8.Final org.hibernate hibernate-entitymanager 4.3.8.Final mysql mysql-connector-java 5.1.6 junit junit 4.12 pss org.apache.maven.plugins maven-compiler-plugin
然后Ctrl +Shift+s大开页面配置JPA
点击加号在下面找到JPA文件
然后在点击生成的JPA里面的加号找到加号直接配置生成文件 拖到你 工程里面
放在resource里面
在进行一下配置框起来的地方改成你数据库的名字
1.4第一个JPA程序
1.1创建一个实体类对象
给于字段提供get set方法
提供一个测试类进行测试
然后就是完成一个用JPA对数据库的CRUD(分层domain dao )
1.6 一级缓存和二级缓存
他就只会查询一次因为第二次其实已经在一级缓存中了
但是,Customer customer1 = entityManager.find(Customer.class, 1);
//开启事务
transaction.begin();entityManager = entityManagerFactory.createEntityManager();transaction = entityManager.getTransaction();
//提交事务transaction.commit();
//关闭事务
entityManager.close();Customer customer2 = entityManager.find(Customer.class, 1);这样他就回打印两次
二级缓存,就是要在不同的entityManager中,只查询一次
1.7单表映射配置细节
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; //要求:主键,使用数据库的自动生成策略 @Column(length = 20,nullable = false,unique = true,name ="username") private String name; //要求:varchar(20),数据库名称为username,不能为空,唯一 private String password; @Column(insertable = false,columnDefinition = "int(10) default(25)") private Integer age = 25; //要求:默认值是25,在插入数据时不允许覆盖(添加数据时不操作该字段) private Boolean sex;// 数据库没有布尔类型,bit对象 @Column(columnDefinition = "decimal (19,2)") private BigDecimal salary;// 19,2 @Column(updatable = false) @Temporal(TemporalType.TIMESTAMP) private Date createTime;//包含年月日时分秒,不允许修改 @Temporal(TemporalType.DATE) private Date birthday;//包含年月日 @Temporal(TemporalType.TIME) private Date time;//包含时分秒 @Lob private String text;//这是一个大文本 @Transient private String temp;//这一个字段不要同步到数据库