コンセプト:JPAは、Java永続化APIの中国名は、JDK 5.0の注釈またはオブジェクトのXML記述である、れるJava Persistence APIと呼ばれている-リレーショナルテーブル間のマッピング、およびエンティティの実行オブジェクトの永続性をデータベースに。
JPAと春データJPAの違い:重版https://my.oschina.net/u/3080373/blog/1828589
JPAはを提供してくれます。
1)ORMマッピングメタデータ:注釈およびXMLメタデータの二種類の形式でJPAサポートは、メタデータは、オブジェクトとテーブル、エンティティ・オブジェクトは、データベーステーブルに保持することにより、フレーム間のマッピング関係を記述する。
以下のような:エンティティ@、表@、列@、@過渡注釈など。
2)JPAのAPI:物理オブジェクトを操作するために使用される、CRUD操作を実行する、私たちはバックグラウンドですべてを行うための枠組みは、退屈なJDBCおよびSQLコードから開発者を解放しました。
例えば:entityManager.merge(T tの);
3)JPQLクエリ言語:オブジェクト指向ではなく、指向データベースクエリ言語クエリデータ、SQL文プログラムの緊密な結合を回避することができます。
如:s.nameは=学生のから?
しかし:
JPAは、JPAが唯一のインターフェイスを定義し、インターフェイスは仕事を達成するのに必要とされると言うことである、唯一の規範です。基本となる必要があるので、いくつかの実現の並べ替え、および休止状態ORMフレームワークは、JPAインターフェースを実現することです。
言い換えれば:
JPA仕様のORMは、Hibernate実装JPA仕様のセットです!図:
春データJPAとは何ですか?
spirngデータJPA JPAは、ばねによって提供簡略開発フレームワークであるが、従来の良好な命名規則[方法]書き込みDAO層インターフェースによって、データベースのアクセスと操作を、インターフェースなしで書き込むことができます。同時に、CRUDに加えて、というように複雑なクエリを並べ替え、ページングなどの機能の多くを提供しています。
スプリングデータJPA JPA仕様は抽象再シール、下部または休止JPA技術の使用と理解することができます。図:
命名規則インタフェース:
例:
springboot統合春データJPAちょうど2つのステップ:
最初のステップ:インポート達人座標
ステップ2:YMLプロファイル構成情報JPA
セルフ:JPAは異なる実装という仕様です。Hibernateは、一の実装形態であるばねデータJPA一の実施態様であるが、ばねデータJPAのカプセル化の高度です。Benpian運動は、あなたがデモテストをやって起動することができますJPAの休止状態の実装と使用を学ぶことです。
プロジェクト構造:
pojo层:User
package com.cy.pojo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = User.TABLE)
public class User {
public static final String TABLE = "SYS_USERS";
@Id
@GenericGenerator(name = "idGenerator", strategy = "native")
@GeneratedValue(generator = "idGenerator")
@Column
private Integer id;
@Column
private String username;
@Column
private String password;
@Column
private String salt;
@Column
private String email;
@Column
private String mobile;
@Column
private Integer valid;
@Column
private Integer deptId;
@Column
private Date createdTime;
@Column
private Date modifiedTime;
@Column
private String createdUser;
@Column
private String modifiedUser;
public User() {
}
public User(Integer id, String username, String password, String salt, String email, String mobile, Integer valid, Integer deptId, Date createdTime, Date modifiedTime, String createdUser, String modifiedUser) {
this.username = username;
this.password = password;
this.salt = salt;
this.email = email;
this.mobile = mobile;
this.valid = valid;
this.deptId = deptId;
this.createdTime = createdTime;
this.modifiedTime = modifiedTime;
this.createdUser = createdUser;
this.modifiedUser = modifiedUser;
}
public static String getTABLE() {
return TABLE;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Integer getValid() {
return valid;
}
public void setValid(Integer valid) {
this.valid = valid;
}
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Date getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(Date modifiedTime) {
this.modifiedTime = modifiedTime;
}
public String getCreatedUser() {
return createdUser;
}
public void setCreatedUser(String createdUser) {
this.createdUser = createdUser;
}
public String getModifiedUser() {
return modifiedUser;
}
public void setModifiedUser(String modifiedUser) {
this.modifiedUser = modifiedUser;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", salt='" + salt + '\'' +
", email='" + email + '\'' +
", mobile='" + mobile + '\'' +
", valid=" + valid +
", deptId=" + deptId +
", createdTime=" + createdTime +
", modifiedTime=" + modifiedTime +
", createdUser='" + createdUser + '\'' +
", modifiedUser='" + modifiedUser + '\'' +
'}';
}
}
プロフィール:persistence.xmlの
<?xml version="1.0" encoding="UTF-8"?>
<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_2_0.xsd"
version="2.0">
<!--在根标签下至少要存在一个持久化单元 (有一个数据库的连接信息)-->
<persistence-unit name="myJpa">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- 配置多条数据库的信息 -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql:///jtsys"></property>
<property name="hibernate.connection.username" value="root"></property>
<property name="hibernate.connection.password" value="123456"></property>
<!-- 方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
<property name="hibernate.show_sql" value="true"></property>
<property name="hibernate.format_sql" value="true"></property>
<property name="hibernate.hbm2ddl.auto" value="update"></property>
</properties>
</persistence-unit>
</persistence>
テスト実装:
package com.cy.connDB;
import com.cy.pojo.User;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.Date;
public class JpaConn {
private static EntityManagerFactory entityManagerFactory;
public static void main(String[] args) {
/**
* JPA连接数据库,注意问题persistence.xml的配置文件必须放在META-INF文件夹下:
* 1.Persistence创建entityFactory对象
* 2.通过entityManagerFactory对象创建entityManager对象
* 3.entityManager获取事务对象
* 4.开启事务
* 5.操作数据库
* 6.关闭资源
*/
entityManagerFactory = Persistence.createEntityManagerFactory("myJpa");
JpaConn jpaConn = new JpaConn();
jpaConn.saveUser();
jpaConn.findUserById();
jpaConn.updateUserByUsername();
jpaConn.deleteUserById();
}
private void deleteUserById() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
User user = entityManager.find(User.class, 18);
entityManager.remove(user);
tx.commit();
entityManager.close();
}
private void updateUserByUsername() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
User user = entityManager.find(User.class, 12);
user.setUsername("zhouyu");
entityManager.merge(user);
tx.commit();
entityManager.close();
}
private void findUserById() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
User user = entityManager.find(User.class, 12);
System.out.println(user);
}
private void saveUser() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
User user = new User();
user.setUsername("xiaoqiao");
user.setEmail("[email protected]");
user.setMobile("18755556666");
user.setCreatedTime(new Date());
user.setModifiedTime(new Date());
user.setCreatedUser("admin");
user.setModifiedUser("admin");
entityManager.persist(user);
transaction.commit();
entityManager.close();
}
}
概要:JPA、場所のpersistence.xml設定ファイルを使用するときに特別な注意を払う必要が缶の下のsrc / META-INFに配置する必要があります!!!
の手順を使用して、JPAのデータベース接続:
1.読む永続することにより、構成ファイルには、オブジェクトを作成してEntityManagerFactory
EntityManagerのは、オブジェクトを介してオブジェクトを作成します。2.のEntityManagerFactory
3.entityManager取得トランザクションオブジェクト
4.ターン総務
entityManegerを使用して5.データベース操作
6.閉じるリソース
データベースの操作方法は、EntityManagerを使用: 無効持続(オブジェクトVAR1);オブジェクトの保存 <T> Tマージ(T VAR1 ); 状態独立エンティティインスタンスは、管理状況を行くだろう。 空の削除(オブジェクトVAR1)、削除データ <T> T (クラス<T> VAR1、検索オブジェクトVAR2); プライマリキークエリ のクエリからCreateQuery(CriteriaUpdate VAR1); EG:使用例
EntityManager em = …;
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Entity class> cq = cb.createQuery(Entity.class);
Root<Entity> from = cq.from(Entity.class);
cq.select(Entity);
//必须要有CriteriaQuery对象,才能用此方法
TypedQuery<Entity> q = em.createQuery(cq);
List<Entity> allitems = q.getResultList();
クエリcreateNamedQuery(文字列VAR1)、SQLステートメントを使用してデータベース照会する CriteriaBuilder getCriteriaBuilderを();データベースを照会するための基準を作成します