jdbc는 실제 쿼리를 사용
mybatis, jdbc template 도 비슷
JPA의 경우 개발향상성 향상, 속도, 유지보수에 좋음
JPA가 실무에서 어려운 이유
1. 객체와 테이블을 올바르게 설계하지 못해서
2. JPA내부 동작 방식 이해하지 못해서
* SQL 중심적인 개발의 경우 객체모델링할수록 매핑작업이 늘어난다..
jpa 지연로딩/즉시로딩
- 지연로딩: 객체가 실제 사용될 때 로딩
- 즉시로딩: Join sql로 한번에 연관된 객체까지 미리 조회
=> 지연,즉시로딩을 on/off 할 수 있다.
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>
<!-- H2 필수 속성 -->
<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"/>
<!-- MS-SQL 필수 속성 -->
<!--<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value="study"/>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://192.168.111.222:1433;databaseName=study"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>-->
<!-- Oracle 필수 속성 -->
<!--<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.user" value="study"/>
<property name="javax.persistence.jdbc.password" value="study"/>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@192.168.111.222:1521:orcl"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>-->
<!-- Tibero 필수 속성 -->
<!--<property name="javax.persistence.jdbc.driver" value="com.tmax.tibero.jdbc.TbDriver"/>
<property name="javax.persistence.jdbc.user" value="study"/>
<property name="javax.persistence.jdbc.password" value="study"/>
<property name="javax.persistence.jdbc.url" value="jdbc:tibero:this:@192.168.111.222:8629:tibero"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>-->
<!-- PostgreSQL 필수 속성 -->
<!--<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="javax.persistence.jdbc.password" value="study"/>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://192.168.111.222:5432/postgres"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>-->
<!-- 옵션 -->
<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.jdbc.batch_size" value="10"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>