クイックスタートの春JPA、これを見ては十分です

JPAは何ですか

より正式な引数は次のとおりです。

JPA(Javaの永続化API)は、Java日クラウン永続仕様です

人気の用語、JPAは良い規制は、それが何ができるかを指定することを事前の一種であり、どのようにそれを行うというようにします。

何がJPA行うことができます

私自身の理解によると、JPAの主な目的は、オブジェクトにデータベース内のデータをマッピングすることである(ORM -オブジェクトリレーショナルマッピング)、その後、我々は、オブジェクトのメソッドを呼び出すことでチェックするために、データの追加および削除を変更することができます。

なぜJPA

我々は、以下のデータを持っているユーザーテーブル(ユーザテーブル)を、持っていると仮定します。

Users
+----+----------+--------------+
| id | username | email        |
+----+--------+----------------+
|  1 | David    | [email protected] | 
+----+----------+--------------+
|  2 | Kevin    | [email protected] | 
+----+----------+--------------+

JPAは、我々は要求データにJDBCを使用する必要が前に現れます。我々はJDBCを使用したい場合は、あなたが書かなければならない面倒なコードの多くを、ますます複雑なSQL文たとえば、唯一のちょうど1のユーザIDを照会するには、次のコードを記述する必要があります。

  • 変数SQL文の定義
// 会因为业务逻辑而变得越来越复杂。比如说还需要获得 积分,等级,购物历史记录等等。
String query = "SELECT * FROM Users WHERE id = 1;";
  • try catch文を書きます
try {
	// 执行JDBC
}  catch (SQLException e) {
	// SQLException 为 checked exception,需要显式处理异常
}
  • JDBCの実装
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
  • 抽出結果
while (rs.next()) {
	Long userId = rs.getInt("id");
	String userName = rs.getString("username");
	// 业务逻辑省略
}

プロジェクトのビジネスロジックが非常に複雑であり、言葉の頻繁な変更を必要とする場合したがって、JDBCを維持することは非常に困難になります。

基準サンプルコードOracle JDBC公式

JPAの使い方

ここで私は、春のブート年間で皆のためにJPAを使用する方法を示します。

依存追加

まず、我々はのpom.xmlに依存関係を追加します。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Userエンティティクラスを作成します。

@Entity
@Table(name = "Users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
	private String username;
	private String email;

	// 此处省略 getters / setters
}

エンティティ・クラスが書かれたセッターとゲッターを与える必要があります覚えておいてください。

JPAリポジトリインタフェースの作成

@Repository
public interface UserJpaRepository extends CrudRepository<User, Integer> {
    User findById(int id);
}

ここでは、私たちの相続CrudRepositoryインタフェースリポジトリインタフェースを聞かせて、一般的なエンティティクラスを記入する最初の必要性、および第二は、一般的なエンティティクラスIDデータ型を記入することです。

JPAは、これらの方法を達成するために私たちを助けるため、我々は、これらの方法を達成するために行く必要はありません。我々は唯一の命名規則に従って、これらのメソッドを宣言する必要があります。

基本的な命名規則:

findBy + {COLUMN_NAME} + {logical_operator} + {COLUMN_NAME} +···

パラメータは、ルール:

メソッド名COLUMN_NAMEの順序のためのパラメータの順序

例えば:

私はデビッドにクエリのユーザ名にしたいとしたり、ユーザーのメールボックス[email protected]、我々はメソッドを宣言することができます。

User findByUsernameOrEmail(String username, String email);

JPA詳細な方法は、公式ドキュメントの命名を参照してください。

次に、このメソッドを呼び出し、我々は、Userオブジェクトを取得します。ユーザーオブジェクトフィールド
ID、ユーザー名、電子メールを含みます、。私たちは、ゲッター/セッターを介してデータを取得したり、変更することができます。これはを通じて、ORMの概念であるオブジェクトを変更して再検索データとの相互作用への追加や削除に。

作成UserServiceの

その後、我々はいくつかの一般的なビジネスロジックを実現するためにUserServiceのクラスを作成します。これは、ビジネス・ロジックの2種類のデモです:

  • ユーザーのクエリIDによると
  • ユーザーのメールボックスを変更します。
@Service
public class UserService {
	@Autowired
	private UserJpaRepository userJpaRepository;
	
	// 根据 id 查询用户
	public User findById(int id) {
		return userJpaRepository.findById(id);
	}

	// 修改用户邮箱
	public void changeUserEmailById(int userId, String email) {
		User user = this.findById(userId);
		user.setEmail(email);
		userJpaRepository.save(user);
	}
}

私たちは、あなたがJPAを使用した場合、コードの可読性が質的に改善されます、JDBCに比べて、見ることができます。

UserControllerでの作成

次は、私たちはそれに適切なAPIインターフェイスを作成する必要があります。

@RestController
@RequestMapping(value = "/api/v1/users")
public class UserController {
	@Autowired
	private UserService userService;

	@GetMapping(value = "/{id}")
	public ResponseEntity<User> getUserById(@PathVariable int id) {
		User user = userService.findById(id);
		return ResponseEntity.ok().body(user);
	}

	@PostMapping(value = "/email")
	public ResponseEntity<User> changeUserEmail(@RequestBody JSONObject payload) {
		String userId = Integer.parseInt((String) payload.get("userId"));
		String newEmail = (String) payload.get("newEmail");
		userService.changeUserEmailById(userId, newEmail);
		return ResponseEntity.ok().body(user);
	}
}

例URL:

// 查询 id 为 1 的用户GET/api/v1/users/1 

// 更改用户邮箱POST/api/v1/users/email
【PAYLOAD{
	"userId": "1",
	"newEmail": "[email protected]"	
}

読んでくれてありがとう!感謝祭ああ!

まだ学ん著者は、何かが間違っがある場合は、指摘し、含まれている、あなたに感謝してください!
著者:デビッド・チョウ(バンクーバー、サイモンフレーザー大学のコンピュータの学生)

公開された14元の記事 ウォンの賞賛8 ビュー2204

おすすめ

転載: blog.csdn.net/vandavidchou/article/details/103339187