FrameWork/ORM
-
ORM - JPA시작(비지니스 로직)FrameWork/ORM 2024. 2. 28. 12:35
JPA시작(비지니스 로직) 비지니스 로직 @Component public class JpaMain { @Transactional public void logic(EntityManager em){ String id = "id1"; Member member= new Member(); member.setId(id); member.setUsername("진영"); member.setAge(2); //등록 em.persist(member); //수정 member.setAge(20); //한건 조회 Member findMember = em.find(Member.class,id); System.out.println("findMember="+findMember.getUsername()+ ", get="+findMemb..
-
ORM - JPA설정FrameWork/ORM 2024. 2. 14. 16:14
JPA 설정 JPA 설정은 영속성 유닛(persistence-unit)이라는 것부터 시작하는데 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다. 그리고 영속성 유닛에는 고유한 이름을 부여해야 하는데 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test:mem:jpausage 위와 같이 url 속성에 연결해서 `mem:jpausage`와 같이 명시 해주면 된다. JPA 표준 속성 spring.data.username : 데이터베이스 접속 아이디 spring.datasource.password : 데이터베이스 접속 비밀번호 spring.datasource.url : 데이터베이스 접속 URL 하이버네이트 속성 sp..
-
ORM - JPA란 무엇인가?FrameWork/ORM 2024. 1. 22. 14:18
JPA란 무엇인가? JPA(JAVA Persistence API)는 자바 진영의 ORM 표준 기술이다. 그렇다면 ORM이란 무엇일까? ORM(Object-Relational-Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객첼르 마치 자바 컬렉션 저장하듯이 ORM 프레임 워크에 저장하면 된다. 그러면 ORM 프래임워크가 적절한 INSER SQL을 생성해서 데이터 베이스에 객체를 저장해준다. JPA를 사용해서 DB에 객체 저장 jpa.persist(member);..
-
ORM - ORM과 문제 해결3 (객체 그래프 탐색, 비교)FrameWork/ORM 2024. 1. 22. 11:10
ORM과 문제 해결3 객체 그래프 탐색 객체에서 회원이 소속된 팀을 조회할 대는 다음처럼 참조를 사용해서 연관된 팀을 찾으면 되는데, 이것을 객체 그래프 탐색이라 한다. Team team = member.getTeam(); 위 객체 그래프를 탐색하는 코드다. member.getOrder().getOrderItem()... //자유로운 객체 그래프 탐색 객체는 마음껏 객체 그래프를 탐색할 수 있거야 한다. 그런데 마음껏 객체 그래프를 탐색할 수 있을까? SELECT M.*,T.* FROM MEMBER M JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID member.getTeam(); //성공 member.getOrder(); //실패(null) MemberDAO에서 member 객체를 조..
-
ORM - ORM과 문제 해결2(연관관계)FrameWork/ORM 2024. 1. 22. 10:05
ORM과 문제 해결2 연관관계 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를 조회한다. 반면에 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 가지고 조인을 사용해서 연관된 테이블을 조회한다. 참조를 사용하는 객체와 외래 키를 사용하는 관계현 데이터베이스 사이의 패러다임 불일치는 객체지향 모델링을 거의 포기하게 만들 정도록 극복하기 어렵다. Member 객체는 Member.team필드에 Team 객체의 참조를 보관해서 Team객체와 관계를 맺는다. 따라서 이 참조 필드에 접근하면 Member와 연관된 Team을 조회 할 수 있다. class Member { Team team; ... Team getTeam() { return team; } } class Team..
-
ORM - ORM과 문제 해결1(상속)FrameWork/ORM 2024. 1. 22. 08:51
ORM과 문제 해결 1 ORM 기술은 이런 문제를 어떻게 해결할까? 우선은 OMR 중에도 JPA를 통해 ORM 기술이 이 문제를 어떻게 해결하는지 간단히 알아보자 JPA를 사용하면 객체를 데이터베이스에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하는 것이 아니라 JPA가 제공하는 API를 사용하면 된다. JPA가 개발자 대신에 적절한 SQL을 생성해서 데이터베이스에 전달한다. JPA가 제공하는 CRUD API를 간단히 알아보자. ▼저장 기능 jpa.persist(member); //저장 persist() 메소드는 객체를 데이터베이스에 저장한다. 이 메소드를 호출하면 JPA가 객체와 매핑 정보를 보고 적절한 INSERT SQL을 생성해서 데이터베이스에 전달한다. 매핑정보는 어떤 객체를 어떤 테이블에 ..
-
ORM- SQL을 직접 다룰 때 발생하는 문제점FrameWork/ORM 2024. 1. 20. 19:52
SQL을 직접 다룰 때 발생하는 문제점 관계형 데이터베이스는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소다. 그런 데이터 베이스를 관리하려면 SQL을 사용해야 한다. 자바로 작성한 애플리케이션은 JBDC API를 사용해서 SQL을 데이터베이스에 전달한다. 반복 그리고 반복 구체적인 예시로 SQL을 직접 다룰 때의 문제점을 알아보자 예시의 시나리오는 자바와 관계형 데이터베이스를 사용해서 회원 관리 기능을 구현하는 것이다. 회원을 CRUD하는 기능 public class Member{ private Stirng memberId; private String name; ... } public class MemberDAO{ public Member find(String memberId){...} } 이제 M..