37 TIL

김성훈·2021년 11월 6일

내일배움캠프 TIL

목록 보기
24/44
post-thumbnail

JPA 섭렵

JPA (Java Persistence API ) 는 Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음.
JPA를 사용하면 SQL이 아닌 객체 중심으로 개발할 수 있어 생산성이 좋아지고 유지보수도 수월해진다.
또한 JPA에게 객체를 저장해 패러다임의 불일치도 해결할 수 있다

SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기
프로젝트 만들때 설정해주면 바로 사용가능

Persistence❓
데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

ORM❓
Object-Relational Mapping
객체와 관계형 데이터베이스를 매핑한다는 뜻
ORM 프레임워크는 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결해준다. 객체는 객체대로 생성하고, 데이터베이스는 데이터베이스에 맞도록 설계를 가능하게 해준다. 개발자는 이를 매핑하는 방법만 전달해주면 된다.

패러다임 불일치❓
데이터베이스는 데이터 중심으로 구조화되어있다. 객체의 상속, 다형성 같은 개념이없다. 그렇다보니 객체와 데이터베이스가 지향하는 점이 다르다. 이것을 객체와 데이터베이스의 패러다임 불일치라고 한다.

용어
MysQL: Table = JAVA:Domain
MYSQL: SQL = JAVA:Repository


파일을 만들고
넣어준다

@NoArgsConstructor 기본생성자를 대신 생성해줍니다.
@Entity  <테이블임을 나타냄>
public class Course {

    @Id // ID 값, <Primary Key로 사용하겠다는 뜻.>
    @GeneratedValue(strategy = GenerationType.AUTO)
    <자동 증가 명령> = <AUTO_INCREMENT>
    
    private Long id;

    @Column(nullable = false)  
    <컬럼 값이고 반드시 값이 존재해야 함을 나타냄> = <NOT NULL>
    
    
    private String title;

    @Column(nullable = false)
    private String tutor;

    public String getTitle() {
        return this.title;
    }

    public String getTutor() {
        return this.tutor;
    }
    <생성자>
    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
} 
<SETTER 는 repository 해주기 때문에 GETTER만 설정>


<JpaRepository라는 기능을 가져와서 CourseRepository에 쓸꺼다>
public interface CourseRepository extends JpaRepository<Course,Long> {

courese = 클래스
Long = ID
}

Interface:
JPA는 Interface 로만 사용할 수 있음
JPA를 사용하는 방법

    public static void main(String[] args) {
        SpringApplication.run(Week02Application.class, args);
    }
    // Week02Application.java 의 main
    @Bean       <보기위해 만듬>
    public CommandLineRunner demo(CourseRepository repository) {
        return (args) -> {
                   <Course를 임포트 하고 정보 넣어줌>
            Course course1 = new Course("봄봄봄","김성훈");
            repository.save(course1);
                   <정보 조회>
            List<Course> courseList = repository.findAll();

            for(int i = 0; i<courseList.size(); i++){
               Course c = courseList.get(i);
                System.out.println(c.getTitle());
                System.out.println(c.getTutor());
            }


        };
    }

}

정보가 들어간다


보인다

<출처>

그냥 그냥 블로그 ([JPA] JPA란? JPA를 사용하는 이유)
어제보다 더 나은 내일을 [Spring JPA] JPA 란?
이펙티브 백엔드[JPA] 패러다임 불일치

profile
화이팅

0개의 댓글