37 TIL

김성훈·2021년 11월 6일
0

내일배움캠프 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개의 댓글