728x90
반응형
1. 환경설정
h2랑 maven 사용안하고 gradle과 mariadb로 진행하는 경우 아래처럼 설정
build.gradle
implementation 'org.hibernate:hibernate-entitymanager:5.6.14.Final'
implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.3'
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">
<!-- gradle사용시 필수 입력 -->
<class>hellojpa.Member</class>
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="USER_ID"/>
<property name="javax.persistence.jdbc.password" value="PASSWORD"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mariadb://HOST:PORT/SCHEMA_NAME"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MariaDBDialect"/>
<!-- 옵션 -->
<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.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
show_sql : query가 콘솔에 보임
format_sql : 콘솔에 보이는 query를 포맷팅 해줌
use_sql_comments: 왜 이 query가 호출되었는지 적어줌
jpa특징
Table, Column annotation으로 명시없이 사용하면 클래스의 이름을 table로, 필드의 이름을 column으로 해서 매칭시킴
entity manager factory는 하나 생성 후 어플리케이션에서 돌려가면서 사용
entity manager는 반드시 로컬로. 단일 쓰레드에서만. 쓰레드간 공유x
jpa의 모든 데이터 업데이트는 트랜잭션 안에서 실행.(스프링으로 가면 그냥 @Transactional로.,.)
JPQL?
List<Member> result = entityManager.createQuety("select m from Member as m", Member.class).setFirstResult(5).setMaxResult(8).getResultList();
그냥 쿼리를 만든 다음 수행 가능한테 중요한건 createQuery안에 들어간게 전체가 아니라 엔티티라고 보면 된다.
728x90
반응형
'JAVA > spring' 카테고리의 다른 글
spring method 요청에 대해 핸들링하기 (0) | 2023.03.13 |
---|---|
spring boot 최소한으로 logging 설정하기(logback을 곁들인) (0) | 2023.03.12 |
Flyway Placeholder사용(application.yml / properties 파일 읽기) (0) | 2023.02.26 |
spring(boot)의 예외 처리 방식 (0) | 2023.02.24 |
[QueryDSL] BooleanExpression말고 Predicate[]로 조건을 동적으로 처리하기 (0) | 2023.02.11 |