객체 매핑하기
@Entity : JPA 가 관리할 객체를 엔티티라 부른다
@Id : DB와 PK와 매핑 할 필드
@Entity
public class Member{
@Id
private Long id;
private String name;
...
}
create table Member(
id bigint not null,
name varchar(255),
primary key (id)
)
실습을 위해서 db에 그냥 테이블 만든거야.
persistence.xml
-JPA 설정 파일 -/META-INF/persistence.xml 위치 -javax.persistence로 시작 : JPA 표준 속성 -hibernamte로 시작 : 하이버네이트 전용 속성
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.2">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<!-- 방언 설정 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!--데이터베이스 스키마 자동 생성하기-->
<!--<property name="hibernate.id.new_generator_mappings" value="true"/>-->
<property name="hibernate.hbm2ddl.auto" value="create" />
<!--
create: 기존테이블 삭제 후 다시 생성 (DROP+CREATE)- 운영DB xx, 웬만하면 개발도 xx
createㄱ-drop: create와 같으나 종료시점에 테이블 drop - 운영DB xx, 웬만하면 개발도 xx
update: 변경분만 반영 - 운영DB xx, 웬만하면 개발도 xx
validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
none: 사용하지 않음
local에서 사용하기에 좋겠다.
-->
</properties>
</persistence-unit>
</persistence>
데이터베이스 방언
dialect: 방언
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
이게 왜 있냐? JPA는 특정 데이터베이스에 종속적이지 않은 기술이다. 하지만 각각의 DB에서 제공하는 SQL 문법과 함수는 조금씩 다르다... 오라클이 안 놓아줌... 뭐라도 걸려있어야? 돈 내고 자기 꺼 쓰지. 다른 곳에 못 가ㅜㅜ
차이 예) -MySQL은 VARCHAR, ORACLE은 VARCHAR2 -문자열 자르기 MYSQL은 SUBSTRING(), ORACLE SUBSTR(). -페이징 MySQL LIMIT, Oracle은 ROWNUM MSSQL은 더 심함...
방언 : SQL 표준을 지키지 않거나 특정 DB만의 고유한 기능
MySQLDialect, OracleDialect, H2Dialect 등
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
DB 바꿔라! 비용!! 쿼리문 바꾸려면... 흐엥ㅜ0ㅜ JPA가 방언 지원해줌 그냥 property만 바꿔주면 됨
하이버네이트 45가지 언어 지원
해당 포스팅은 T아카데미에서 진행한 김영한 강사님의 JPA 유튜브 강의를 듣고 정리한 것입니다 : ) https://www.youtube.com/watch?v=WfrSN9Z7MiA&list=PL9mhQYIlKEhfpMVndI23RwWTL9-VL-B7U
'Spring > JPA' 카테고리의 다른 글
JPA 필드와 칼럼 매핑 (0) | 2021.04.11 |
---|---|
JPA persistence.xml과 라이브러리 설정 (0) | 2021.04.11 |
JPA 기초와 매핑 : 실습 (0) | 2021.04.11 |
JPA에 대해서 (0) | 2021.04.11 |
JPA, 객체지향과 RDB (0) | 2021.04.11 |
Uploaded by Notion2Tistory v1.1.0