Eclipse에서 JPA (Java Persistence API)
11209 단어 PostgreSQL이클립스자바jpa
소개
JPA의 샘플 프로그램을 Eclipse로 만들어 보겠습니다.
MVC 프로그램 를 개조해, JPA 를 사용해 Postgre SQL 의 DB 로부터 데이터를 취득합니다.
미리 Emplyee 테이블을 작성해 둡니다. (참조: Postgre SQL 설치 )
개발 환경
Windows 10 Pro 1709(16299.192)
Eclipse pleiades-4.7.3
java 1.8.0_162
PostgreSQL 10.4 Released!
절차
1. PostgreSQL JDBC Driver 다운로드
2. 프로젝트의 WEB-INF\lib에 복사
3. Postgres SQL에 대한 연결 만들기
4. JPA 프로젝트로 변환
5. 소스 코드 변경
6. 동작 확인
1. PostgreSQL JDBC Driver 다운로드
URL
https://jdbc.postgresql.org/download.html
1. PostgreSQL JDBC 4.2 Driver, 42.2.2 클릭
2. 프로젝트의 WEB-INF\lib에 복사
3. Postgres SQL에 대한 연결 만들기
1. 창 -> 보기 표시 -> 기타 메뉴 선택
2. 데이터 관리, 데이터 소스 탐색기를 선택하고 열기를 클릭하십시오.
3. 데이터 소스 연결에서 오른쪽 메뉴, 새로 만들기를 클릭합니다.
4. Postgres SQL을 선택하고 다음을 클릭합니다.
5. 데이터베이스, URL, 사용자 이름, 비밀번호를 입력하고 연결 테스트를 클릭합니다.
6. "Ping이 성공적으로 완료되었습니다"를 확인하고 "OK"버튼을 클릭하십시오.
7. 마침 버튼을 클릭
8. Postgre SQL 설치에서 작성한 테이블을 확인할 수 있다
4. JPA 프로젝트로 변환
1. 프로젝트에서 오른쪽 메뉴 -> 구성 -> JPA 프로젝트로 변환 선택
2. 다음 클릭
3. EclipseLink 2.5.2를 선택하고 다음을 클릭합니다.
4. "이 라이선스 조항에 위탁"을 체크하고 "완료"클릭
5. 새 PostgreSQL 연결을 선택하고 빌드 경로, 연결에서 기본 카탈로그 덮어쓰기, 연결에서 기본 스키마 재정의를 선택하고 마침을 클릭합니다.
6. 프로젝트에서 오른쪽 메뉴 -> JPA 도구 -> 테이블에서 엔티티 생성을 선택
7. employee 테이블을 선택하고 마침 클릭
5. 소스 코드 변경
1. Employee Entity에 findById @NamedQuery 추가
変更前
@Entity
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e")
public class Employee implements Serializable {
変更後
@Entity
@NamedQueries({
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e"),
@NamedQuery(name = "Employee.findById", query = "SELECT e from Employee e where e.id = :id")
})
public class Employee implements Serializable {
2. EmployeeServlet을 DB에서 검색하도록 변경
変更後
package emp;
import java.io.IOException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Employee;
/**
* Servlet implementation class EmployeeServlet
*/
@WebServlet(name = "EmpList", urlPatterns = { "/EmpList" })
public class EmployeeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public EmployeeServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SampleMVC2");
EntityManager entityManager = emf.createEntityManager();
List<Employee> employeeList = entityManager
.createNamedQuery("Employee.findAll", Employee.class)
.getResultList();
entityManager.close();
emf.close();
// ViewへModelデータを渡す
request.setAttribute("employeeList", employeeList);
// Viewを表示
this.getServletContext()
.getRequestDispatcher("/employeeList.jsp")
.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SampleMVC2");
EntityManager entityManager = emf.createEntityManager();
List<Employee> employeeList;
String id = request.getParameter("id");
if (id.isEmpty()) {
employeeList = entityManager
.createNamedQuery("Employee.findAll", Employee.class)
.getResultList();
}
else {
employeeList = entityManager
.createNamedQuery("Employee.findById", Employee.class)
.setParameter("id", id)
.getResultList();
}
entityManager.close();
emf.close();
// ViewへModelデータを渡す
request.setAttribute("employeeList", employeeList);
// Viewを表示
this.getServletContext()
.getRequestDispatcher("/employeeList.jsp")
.forward(request, response);
}
}
3. EmployeeBean에서 오른쪽 메뉴 -> 삭제 선택
4. OK 선택
5. persistence.xml 변경
変更前
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="SampleMVC">
<class>model.Employee</class>
</persistence-unit>
</persistence>
変更後(DB接続情報追加)
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="SampleMVC2">
<class>model.Employee</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver -->
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/postgres" /> <!-- BD Mane -->
<property name="javax.persistence.jdbc.user" value="postgres" /> <!-- DB User -->
<property name="javax.persistence.jdbc.password" value="dev" /> <!-- DB Password -->
</properties>
</persistence-unit>
</persistence>
6. 동작 확인
Eclipse에서 MVC.의 동작 확인 참조
결론
Reference
이 문제에 관하여(Eclipse에서 JPA (Java Persistence API)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/0ashina0/items/efaf27a818cbfbffffc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)