[CS 스터디] Spring

한주영·2023년 5월 10일
0

CS

목록 보기
14/19

JPA

JDBC(Java Database Connectivity)

•관계형 데이터베이스에 연결하고 조작되는데 사용되는 JAVA API를 의미한다
•JAVA Standard Edtion플랫폼의 일부이다
•애플리케이션이 데이터베이스에 액세스 될수있도록 표준 인터페이스를 제공
•JDBC API와 JDBC드라이버 관리자 두가지 구성요소로 구성된다.
•Connection, Statement, ResultSet 및 PreparedStatement 같은
•데이터베이스 작업을 위한 여러클래스와 인터페이스를 제공

Spring JDBC

•SpringJDBC는 애플리케이션의 데이터 액세스를 위해 JDBC API상위 수준
추상화를 제공하는 스프링 프레임워크의 모듈이다.
•직관적인 프로그래밍 모델을 제공하여 JDBC작업 프로세스를 단순화한다
•JdbcTemplate클래스를 이용해서 구성한다
해당 클래스는 SQL문을 실행하고 결과를 검색하기 위한 메서드를 제공한다
•AOP를 사용하여 선언전 트랜잭션 관리를 지원한다
•데이터 소스 추상화 지원을 한다
• Hibernate 및 MyBatis와 같은 객체 매핑 프레임워크에 대한 지원이있다

Sql Mapper(Mybatis)

•java객체를 SQL문에 매핑하여 관계형 데이터베이스와 상호작용을 관리하는 방법을
제공함으로써 널리 사용되는 프레임워크
•Spring과 함께 사용하면 데이터베이스 엑세스를 관리하기위한 강력하고 유연한 솔루션을 제공한다
•MyBatis-Spring 통합 모듈은 MyBatis SqlSessionFactory를 생성하는 팩토리 빈인 MyBatisSqlSessionFactoryBean을 제공한다.
•SqlSessionFactory는 MyBatis에서 SQL 문을 실행하기 위한 주요 인터페이스인 SqlSession을 생성하는 데 사용된다.
• MyBatis XML 파일에 정의된 모든 SQL 문에 대한 매퍼 인터페이스를 자동으로 생성하는 MyBatis 매퍼 스캐닝 기능을 제공한다.

ORM(Object-Relational Mapping)

•개발자가 데이터베이스 테이블 응용프로그램의 객체에 매핑할수있도록 하는 소프트웨어 개발에 사용되는 기술이다
•높은 수준의 객체지향 인터페이스를 사용하여 데이터베이스와 상호작용 할수있도록 하는 프로그래밍 패러다임이다
•애플리케이션에서 데이터베이스 테이블과 클래스 간의 매핑을 정의할수있는 도구 세트를 제공
->이에따라 데이터베이스에서 데이터를 읽거나 쓰는데 필요한SQL쿼리를 생성
•일대일,일대다 및 다대다 테이블관계를 정의하기 위한 일련의 규칙을 제공
•데이터 유효성 검사, 캐싱 및 트랜잭션 관리를 지원한다.
•Java용 ORM 프레임워크로는 Hibernate, MyBatis 및 EclipseLink 가 있다.

JPA(Java Persistence API)

•java의 ORM사양이다
•관계형 데이터베이스를 JAVA객체에 매핑하기 위한 일련의 인터페이스 및 클래스정의
•데이터베이스 작업을 위한 API제공하도록 설계되어있음
•JPA용 트랜잭션 관리를 제공하는 JpaTransactionManager가 있다
->spring 트랜잭션을 관리, 애플리케이션 내에서JPA를 쉽게 사용가능하다.

•Hibernate

•JPA를 구현하는데에 많이 사용되는 ORM프레임워크
•관계형데이터베이스 테이블에 매핑후 둘사이의 상호작용을 위한 도구를 제공
•개발자가 제공한 구성 및 매핑을 기반으로 SQL쿼리를 자동으로 생성
-> 이를 통해 개발자는 복잡한 SQL쿼리를 작성하는 대신 애플리케이션의 비즈니스 로직에 집중할수있다.
•데이터베이스의 작업 성능을 향상시킬수있는 캐싱 및 지연로딩에 대한 지원을 제공

•영속성 컨텍스트

•JPA(Java Persistence API)에서 Persistence Context는 일련의 엔터티 인스턴스를 트랜잭션 방식으로 관리하는 논리적 컨테이너
•데이터베이스 테이블에 매핑되는 Java 객체인 JPA에서 관리되는 엔티티의 메모리 캐시를 나타낸다

•지속성 컨텍스트는 첫 번째 수준 캐시 역할을 하며 관리 중인 모든 엔터티의 상태를 유지.
•데이터베이스에서 엔티티를 읽으면 Persistence Context에 저장된다.
•엔티티가 수정되면 지속성 컨텍스트는 변경 사항을 추적하고 트랜잭션이 커밋될 때까지 관리한다.
트랜잭션이 커밋되면 지속성 컨텍스트는 변경 사항을 데이터베이스와 동기화 한다.
지속성 컨텍스트에는 두 가지 주요 책임이 있다

1.엔터티 수명 주기 관리: 지속성 컨텍스트는 데이터베이스에서 엔티티 로드, 새 엔티티 유지 및 데이터베이스에서 엔티티 제거를 포함하여 엔티티 수명 주기 관리를 담당한다.
2.트랜잭션 동기화: 지속성 컨텍스트는 관리되는 엔티티 대한 변경 사항을 데이터베이스와 동기화하는 역할을 한다.
=>트랜잭션이 커밋되면 지속성 컨텍스트는 관리되는 엔터티에 대한 모든 변경 사항을 데이터베이스에 반영한다.

•즉시 / 지연로딩

✔️즉시로딩

JPA(Java Persistence API) 애플리케이션에서 관련 엔터티를 로드하기 위한 두 가지 전략
Eager Loading이라고도 하는 Immediate Loading은 모든 관련 엔터티가 부모 엔터티와 동시에 데이터베이스에서 로드되는 전략이다
->이는 엔티티가 데이터베이스에서 로드될때 필요여부와 관계없이 관련된 모든 엔티티도 메모리에 로드됨을 의미한다.
->이로인해 상당한 양의 데이터가 메모리에 로드되어 성능에 영향을 미칠수있다.

✔️지연로딩
관련 엔티티가 명시적으로 액세스될 때까지 데이터베이스에서 로드되지 않는 전략
=>이는 엔티티가 데이터베이스에서 로드될 때 관련 엔터티가 메모리에 즉시 로드되지 않음을 의미한다.
=>처음 액세스할때만 로드되고 메모리에 로드되는 데이터의 양이 크게 줄어들어 응용 프로그램의 성능이 향상된다

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글