[JPA] ORM(Object-Relational Mapping)과 JPA란 무엇인가?
2024. 7. 13. 22:54ㆍBackEnd/Spring Data JPA
ORM이란?
ORM은 데이터베이스 테이블과 객체 지향 프로그래밍의 클래스 간의 매핑을 자동화하는 기술이다.
이를 통해 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있다.
ORM의 장점
1. 개발 생산성 향상
SQL 쿼리를 직접 작성하는 대신, ORM을 통해 간단한 메서드 호출로 데이터베이스 작업을 수행할 수 있다.
2. 유지보수성 향상
객체 지향 코드로 데이터베이스 작업을 처리하므로, 코드의 가독성이 높아지고 유지보수가 쉬워진다.
3. 데이터베이스 독립성
ORM 프레임워크는 다양한 데이터베이스를 지원하므로, 특정 데이터베이스에 종속되지 않고 애플리케이션을 개발할 수 있다.
JPA(Java Persistence API)란?
JPA는 자바 플랫폼의 ORM 표준 인터페이스이다.
JPA는 객체와 관계형 데이터베이스 간의 매핑을 관리하고, 데이터베이스 작업을 간편하게 수행할 수 있도록 도와준다.
JPA의 주요 구현체로는 Hibernate, EclipseLink, OpenJPA 등이 있다.
JPA의 주요 기능
- 엔티티 매핑: 클래스와 테이블, 필드와 컬럼 간의 매핑을 정의
- 영속성 컨텍스트: 엔티티의 생명주기를 관리
- 쿼리 언어: JPQL(Java Persistence Query Language)을 사용하여 객체지향 쿼리 작성
JPA 사용 예시
Entity 클래스
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
private String email;
private String password;
// Getter, Setter 등
}
Repository 클래스
public interface MemberRepository extends JpaRepository<Member, Long> {
Member findByEmail(String email);
}
Service 클래스
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Transactional
public void registerMember(Member member) {
if (memberRepository.findByEmail(member.getEmail()) != null) {
throw new IllegalStateException("이미 존재하는 이메일입니다.");
}
String encryptedPassword = encryptPassword(member.getPassword());
member.setPassword(encryptedPassword);
memberRepository.save(member);
}
public Member findMemberByEmail(String email) {
return memberRepository.findByEmail(email);
}
private String encryptPassword(String password) {
return BCrypt.hashpw(password, BCrypt.gensalt());
}
}
'BackEnd > Spring Data JPA' 카테고리의 다른 글
[JPA 오류] MySQL5InnoDBDialect deprecated 되었을 때 (0) | 2024.03.14 |
---|