Object-Relational Mapping
) 기술 표준으로 사용하는 인터페이스 모음<---------mapping --------->
object 필드장점
단점
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
src/main/resources -> META-INF ->
persistence.xml<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" 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_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="javax.persistence.jdbc.user" value="spring" /> <property name="javax.persistence.jdbc.password" value="spring" /> <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe" /> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL10Dialect" /> --> <property name="hibernate.hbm2ddl.auto" value="create" /> <!-- 옵션 --> <!-- 콘솔에 하이버네이트가 실행하는 SQL문 출력 --> <property name="hibernate.show_sql" value="true" /> <!-- SQL 출력 시 보기 쉽게 정렬 --> <property name="hibernate.format_sql" value="true" /> <!-- 쿼리 출력 시 주석(comments)도 함께 출력 --> <property name="hibernate.use_sql_comments" value="true" /> </properties> </persistence-unit> </persistence>
public static void main(String[] args) { // 설정 파일의 persistence-unit name에 맞춰 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); // transaction 획득 // 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 EntityTransaction tx = em.getTransaction(); // 트랜잭션 시작 tx.begin(); try { // 추가 (insert) Member member = new Member(); member.setId(1L); member.setName("UserA"); em.persist(member); // 회원조회 (select) Member findMember = em.find(Member.class, 1L); System.out.println("findMember.id : " + findMember.getId()); System.out.println("findMember.name : " + findMember.getName()); // 회원 수정 (update) findMember.setName("HelloJPA"); // 회원 삭제 (delete) em.remove(findMember); // 트랜잭션 커밋 tx.commit(); }catch(Exception e) { // 예외 발생시 트랜잭션 롤백 tx.rollback(); }finally { // 결과와 상관없이 EntityManager, EntityManagerFactory close em.close(); emf.close(); }