Page History
Tip |
---|
JPA의 컨셉은 Java Persistence API 의 약자로 데이터 베이스에 존재하는 모델을 자바객체로 맵핑하는데 목적이 있습니다. DB는 종속적이지 않게 여러가지 DB 선택이가능하며 여기서는 MYSQL을 통해 실습이 진행됩니다. 설명을 위해, 축약된 코드로 설명을 하였으며, 풀소스는 아래에서 확인가능합니다. CodeLink : http://git.webnori.com/projects/WEBF/repos/spring_jpa/browse JPA 개념 추가설명 : http://blog.woniper.net/255 |
Table of Contents |
---|
접속 DB 설정
No Format |
---|
# application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/spring
spring.datasource.username=test
spring.datasource.password=test1234 |
spring.jpa.hibernate.ddl-auto 옵션
none:
테이블 구조 변경에 관여하지 않지않기때문에, DB 스키마와 JPA 모델을 맞추어놓아야합니다.
update:
JPA에서 정의한 데이터모델과, 데이터베이스의 스키마 변경이 있을때 반영됩니다.create:
매번 테이블을 생성하지만, 어플리케이션이 닫힐때 드롭하지 않습니다.create-drop:
매번 테이블을 생성하고, 세션이 닫힐때 자동으로 테이블을 드롭합니다.
네이밍룰
JPA에서 class를 통해 테이블을 정의할때 몇가지 규칙이 있습니다.
항목 | DB | JPA객체 | 설명 |
---|---|---|---|
Table(Class) | sample_table | SampleTable | 헝가리 표기법을따름 |
Field(member) | samplename | sampleName | 카멜표기법을 따름 |
db가 설치된 os에따라 대소문자를 구분하는 경우가 있기때문에
...
- @Table(name=”SAMPLE_TABLE”)
- @Column(name = “COLUMN_NAME”,nullable=false)
전역 네이밍룰을 변경하고싶으면
application.properties:
- spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.EJB3NamingStrategy
- spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
접속 DB 설정
...
- @Column(name = “COLUMN_NAME”,nullable=false)
전역 네이밍룰을 변경하고싶으면
application.properties:
- spring.jpa.hibernate.
...
- naming.strategy=org.hibernate.cfg.EJB3NamingStrategy
- spring.jpa.hibernate.
...
none:
테이블 구조 변경에 관여하지 않지않기때문에, DB 스키마와 JPA 모델을 맞추어놓아야합니다.
update:
JPA에서 정의한 데이터모델과, 데이터베이스의 스키마 변경이 있을때 반영됩니다.create:
매번 테이블을 생성하지만, 어플리케이션이 닫힐때 드롭하지 않습니다.create-drop:
매번 테이블을 생성하고, 세션이 닫힐때 자동으로 테이블을 드롭합니다.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Data Model(Entity) 생성
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
package com.psmon.springdb; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity // This tells Hibernate to make a table out of this class public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String name; private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } |
...